一,首先说下什么是Django,Django其实就是一个框架,用python写的,能开发网站之类的。
二,django的组成
1,urls:网址入口关联到对应的views视图函数,(采用mvc开发模式的可能是generic类),访问网址就对应一个函数。
2,views:用于处理用户发出的请求,从urls对应过来,通过渲染templates中的网页可以将显示的内容,比如登录后的用户名,用户请求的数据输出到网页。
3,models:涉及到的是对数据库的操作,定制列,表名等。
4,forms:表单,这个设计到用户在浏览器上输入数据提交的验证,也可以用来生成一些输入框。
5,templates:上面提及的views的渲染的模板就在这个文件包里面,如果需要提高django页面缓存的速度,可以加上缓存。
6,admin:这个呢是django自带的非常强大的后台管理系统,当然可以使用新的Xadmin,更加强大。
7,settings:这个是django的配置文件,包括数据库的连接,日志系统的配置,文件上传下载路径等等。
新建项目:django-admin.py startproject project-name
新建一个app:python manage.py startapp app-name
一般一个项目有多个app, 当然通⽤的app也可以在多个项目中使用。
同步数据库操作:
python manage.py makemigrations
python manage.py migrate
运行项目:python manage.py runserver
当提示端口被占用:python manage.py runserver 8001-9999
监听所有可用IP:python manage.py runserver 0.0.0.0:8000
如果是外网进行访问:http://192.168.23.15:8000(格式是http://+ip+端口号)
清空数据库:python manage.py flush (慎用!!)
创建超级管理员:python manage.py createsuperuser
然后输入用户名,邮箱(可不输),密码
下面这个呢,一般用不到,但是用到了,可以省时省力:
当数据库里面已经有表了,如何反向生成models呢??
python manage.py inspectdb >models
三,配置django
如果在django中新建了app,那么一定要在INSTALLED_APPS里面进行注册(Tip:这里会有很多人忘了加逗号。)
在STATIC_URL = ‘static‘’’的下方添加上STATICFILES_DIRS = ( os.path.join(BASE_DIR,'static'),) (Tip:逗号不要再忘了)
四,视图函数的应用:
from django.shortcuts import render,HttpResponse,redirect
#coding:utf-8
# 第一行是声明编码方式,防止遇到中文出错。
from django.http import HttpResponse
def index(request):
return HttpResponse('天青色等烟雨')
这里要注意的是:views里面的视图函数第一个参数必须是request。
return不仅仅可以返回HttpResponse(返回字符串),也可以返回 render(request, 'index.html', context) # (request是必须的,紧接着HTML的页面,context是附带的内容 ),
redirect('www.baidu.com')# redirect返回可以是一个完整的URL,可以是返回外部的网站,这里测试返回百度网站
五,urls的应用:
from django.urls import path, include
urlpatterns = [
path('add', views.add, name='add'),
path('ticket2', views.print_ticket2, name='print_ticket2'),
path('error', views.error_page, name='print_ticket'),
path('error2', include(health.urls)),
path(r'^add/(\d+)/(\d+)/$,views.add_num, name='add_num')
]
在这里提一句,urls里面的匹配用的是正则,还有name属性非常重要,直接关联到项目模板的编写!
为什么将name属性在django的urls配置中很重要呢?
path('add', views.add, name='add')
这个name=‘add’是用来干什么的呢?我们在开发的时候,刚开始想的是 /add/4/5/ ,后来需求变了,现在我们想改成/4_add_5/这种写法,但是在模板或者是代码里里面很多地方已经写成了之前的样式,那是不是需要从头改到尾,万一漏了一项,就不能用了对不对?
from django.core.urlresolvers import reverse
>>>reverse('add', args=(4,5))
'add/4/5/'
在模板里面一样的很方便:
# 不带参数的
{% url 'add' %}
# 带参数的,参数可以是变量名
{% url 'add' 4 5 %} <a href="{% url 'add' 4 5 %}">link</a>
最终渲染出来的结果是
<a href="/add/4/5/">link</a>
当现在要改变urls地址的时候,前提保持name不变,那么模板中网址也会动态的产生变化
url(r'^new_add/(\d+)/(\d+)/$', 'calc.views.add2', name='add'),
渲染出来的结果将会是:
/new_add/4/5/
当然reverse也一样会动态的更新。
——————————————第一篇就讲到这里——————————————