WeChat Official Account Alan 2. django

版权声明:转载请注明出处. https://blog.csdn.net/laodaliubei/article/details/84189529

overview

  • First of all, do you know how to pronounce “Django”?

Django 的名字来源于一个吉普赛爵士吉他手的名字Django Reinhardt,至今为止,他被认为是世界上最棒的吉他手之一。
/ˈdʒæŋɡo/

django – “重量级”.
django用python 写成, MVC 模式(or MTV)
Django的理念是DRY(Don’t Repeat Yourself).

references

Django 基础教程

Django basic frame

  1. manage.pyy & django-admin.pyy
  • 这两个文件代码和包含命令基本是一样的,只不过django-admin.py一般只用来创建项目,而manage.py用来管理创建好了的项目
  • 常见命令的使用,比如创建项目,创建应用,创建超级用户,数据表创建及更新,启动服务器等都包含在django-admin.py和manage.py里.
    更详细
  1. urls.pyy
    网址入口,关联到对应的views.py中的一个函数(或者generic类),访问网址就对应一个函数。
  2. views.pyy
    处理用户发出的请求,从urls.py中对应过来, 通过渲染templates中的网页可以将显示内容.
  3. models.pyy
    models.pyy 决定了数据库长什么样.
  4. forms.pyy
    form.py是Django用来生成form表单代码和验证表单数据是否合法的一个文件, 可以在该文件中创建Form类, 实现自定义表单的功能
from django import forms
  1. templates directory
    views.pyy 中的函数渲染templates中的Html模板,得到动态内容的网页.
  2. settings.pyy
    Django 的设置,配置文件,比如 DEBUG 的开关,静态文件的位置等。
  • __file__ 这个变量可以获取到当前文件路径。os.path.dirname(file) 得到文件所在目录,再来一个os.path.dirname()就是目录的上一级,用一个变量保存这个路径,可移植性更好.
  • DEBUG = True // 部署时就不要让用户瞅见bug
  • ALLOWED_HOSTS 哪些域名可以访问,即使在 Apache 或 Nginx 等中绑定了,这里不允许的话,也是不能访问的。
    当 DEBUG=False 时,这个为必填项,如果不想输入,可以用 ALLOW_HOSTS = [’*’] 来允许所有的。
  • 一般来说我们只要把静态文件放在 APP 中的 static 目录下,部署时用 python manage.pyy collectstatic 就可以把静态文件收集到(复制到) STATIC_ROOT 目录. 也可以用STATICFILES_DIRS =()来设置.
  1. admin.pyy
    admin.pyy与后台相关,只需少许代码就可以实现强大的功能.
  2. requirements.txt
    运行pip install -r requirements.txt 就可以自动安装requirements.txt文件制定的所有包及版本. %这是一个很好的方式%
    FBI Warning : 是在shell中哦~

基本命令

FBI Warning: 是在shell中, 不是python中.

  1. 新建项目 startproject

django-admin.pyy startproject project_name

特别是在 windows 上,如果报错,尝试用 django-admin 代替 django-admin.pyy 试试

如果运行成功,会自动生成一些文件目录, e.g. manage.pyy, urls.pyy,settings.pyy.

  1. 新建app startapp
    python manage.pyy startapp app_name
    django-admin.pyy startapp app_name
  • django-admin.pyy 是安装Django后多出的一个命令,并不是运行的当前目录下的django-admin.pyy(当前目录下也没有).
    一般一个项目有多个app,一个应用也可以用在多个项目中.
    如果运行成功,会在项目目录下生成一个app_name directory.
    然后把新定义的app加到settings.py中的INSTALL_APPS中.
  • 新建的 app 如果不加到 INSTALL_APPS 中的话, django 就不能自动找到app中的模板文件(app-name/templates/下的文件)和静态文件(app-name/static/中的文件)
  1. 创建or更改数据库
    python manage.pyy makemigrations // 创建更改的文件
    python manage.pyy migrate // 将生成的py文件应用到数据库
  2. 使用开发服务器 runserver
    开发服务器,即开发时使用,一般修改代码后会自动重启,方便调试和开发,但是由于性能问题,建议只用来测试,不要用在生产环境。
python manage.py runserver
# 当提示端口被占用的时候,可以用其它端口:
python manage.py runserver 8001
# 监听机器所有可用 ip (电脑可能有多个内网ip或多个外网ip)
python manage.py runserver 0.0.0.0:8000
# 如果是外网或者局域网电脑上可以用其它电脑查看开发服务器
# 访问对应的 ip加端口,比如 http://172.16.20.2:8000

View

定义视图函数相关的URL(网址) i.e. 视图函数<–mapping–>URL.

urls.pyy is different in different Django versions .

template

%最简单的django.http.HttpResponse 来把内容显示到网页上%,但是要真的做个东西出来,当然得用模板渲染了.
默认配置下,Django 的模板系统会自动找到app下面的templates文件夹中的模板文件。

Django 模板查找机制

Django 查找模板的过程是在每个 app 的 templates 文件夹中找,各个 app 的 templates 形成一个文件夹列表,Django 遍历这个列表,一个个文件夹进行查找,当在某一个文件夹找到的时候就停止,所有的都遍历完了还找不到指定的模板的时候就是 Template Not Found (过程类似于Python找包)。Hence , 一个app可以用另一个app的模板文件.

template 中循环/条件判断/标签/过滤器

  1. list 列表
mylist=["1","b"]   // may be defined in views.pyy
{%for i in mylist%}
{{i}}
{% endfor %}

usage: {{var}} {%label%} (for --> endfor)

获取当前用户: {{ request.user }}
获取当前网址: {{ request.path }}
获取当前GET参数:{{ request.GET.urlencode }}

  1. dict 字典
{% for key, value in info_dict.items %}   # in .html file
    {{ key }}: {{ value }}
{% endfor %}
  1. ==, !=, >=, <=, >, < 这些比较都可以在模板中使用
    and, or, not, in, not in 也可以在模板中使用
{% if num <= 100 and num >= 0 %}
num在0100之间
{% else %}
数值不在范围之内!
{% endif %}

Model

Model is related to database ;
与数据库相关的代码一般写在 models.pyy 中,只需要在settings.py中配置即可,不用更改models.py中的代码,丰富的API极大的方便了使用。

修改数据表

Django 1.7.x 及以后的版本集成了 South 的功能,在修改models.py了后运行:

# makemigrations会在当前目录下生成一个migrations文件夹,该文件夹的内容就是数据库要执行的内容 
python manage.py makemigrations
#migrate就是执行之前生成的migrations文件,这一步才是操作数据库的一步 
python manage.py migrate

Django每次更新模型都需要执行以上两步,Django模型增加内容需要设定变量的初始值,否则会在第一步出现问题.

QuerySet API

从数据库中查询出来的结果一般是一个集合,这个集合叫做 QuerySet。

静态文件

静态文件放在对应的 app 下的 static 文件夹中 或者 STATICFILES_DIRS 中的文件夹中。

部署

  1. 收集静态文件
#把以前放在app下static中的静态文件全部拷贝到 settings.pyy 中设置的 STATIC_ROOT 文件夹中
python manage.pyy collectstatic

2 use nginx or apache2
nginx + uwsgi socket 的方式来部署 Django 更主流.

test

Django中有完善的单元测试,我们可以对开发的每一个功能进行单元测试,这样只要运行一个命令python manage.pyy test,就可以测试功能是否正常.

猜你喜欢

转载自blog.csdn.net/laodaliubei/article/details/84189529