Django框架的快速入门笔记
安装Django
1 | pip install django |
创建项目
1 | django-admin startproject mysite |
将会生成以下目录文件:1
2
3
4
5
6
7mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
创建应用
进入manage.py 所在的目录下,然后运行这行命令来创建一个应用:1
python manage.py startapp polls
生成目录如下:1
2
3
4
5
6
7
8
9polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
编写视图控制函数
在views.py
添加以下内容:1
2
3
4
5
6from django.shortcuts import get_object_or_404, render
def index(request):
return render(request, 'polls/index.html')
def results(request):
name = request.POST['name']
return render(request, 'polls/results.html',{'name':name})
几点理解:
- 1、
views.py
里的一个函数对应一个请求控制。类似于Java web中struts2的作用。 - 2、通过return
render()
函数可以跳转到相应的html页面并且把参数转发到该页面。 - 3、可直接通过
return HttpResponse("info")
来返回一个response。
配置路由
配置路由是为了让浏览者输入相应的链接时可以访问相应的内容。
- 在
mysite/urls.py
下的路由插入一条include()
如下:1
2
3
4
5
6
7from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
这一部分的意思为:当匹配到polls/
则截断匹配的URL部分,并把剩余的字符串发送到polls.urls
- 在
polls/urls.py
中路由编辑如下:1
2
3
4
5
6from django.urls import path
from . import views
urlpatterns = [
path('index', views.index, name='index'),
path('results/', views.results, name='results'),
]
这一部分的意思为:上一个路由截断剩余的部分如果匹配到index
则跳转到views.py
下的index
函数。
编写视图
在polls
目录下新建一个templates
的文件夹,在templates
下再建一个polls
文件夹,然后将html文件放在该文件夹下。比如新建一个index.html
文件。
路径如下:
1 | polls/ |
index.html内容如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/polls/results" method="post">
<!--此处有坑--->
{% csrf_token %}
<input name="name" type="text">
<input type="submit" value="提交">
</form>
</body>
</html>
此处action的链接可替换为:1
{% url 'results' %}
results为路由中的name。
同理再新建一个results.html
1
2
3
4
5
6
7
8
9
10
11
12
13
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
{{name}}
</body>
</html>
html内容注意地方:
- 1、
{% csrf_token %}
必写,否则无法提交表单。这个标签将会自动生成一个input
标签,包含name和value属性,作用是为了校验。
到此一个基本的web框架就形成了。启动网站服务
回到网站根目录,执行如下命令:1
python manage.py runserver
其它几点问题
获取表单数据
获取post请求的数据:
在views.py
的函数中使用以下方法获得:1
name = request.POST['name']
views.py
函数里的参数传到html
中:
render参数加一字典1
return render(request, 'polls/results.html',{'name':name})
html
页面获取响应的参数:
使用花双括号,里面变量名即render参数字典的key1
{{name}}
获取POST上传的blob数据
1
2file = request.FILES.get("file")
default_storage.save("./temp.wav",ContentFile(file.read()))
save
的第一个参数为路径及名字,第二个参数ContentFile()
为要写入的内容。
让其他人可以访问Django应用
开服务时用以下命令
1
python manage.py runserver 0.0.0.0:8000
settings.py
中ALLOWED_HOSTS
设置如下:1
ALLOWED_HOSTS = ['*',]
打开电脑的8000端口,设置入站规则即可。
windows设置如图:
三步缺一不可Django runserver配置https
pip命令安装以下包
1
2
3pip install django-extensions
pip install django-werkzeug-debugger-runserver
pip install pyOpenSSL在
settings.py
加入以下两项1
2'werkzeug_debugger_runserver',
'django_extensions',用以下命令开启服务
1
python manage.py runserver_plus --cert server.crt 0:8000
总结
Django框架整体的运行流程如图:
参考链接
Django中文官方文档
[https://docs.djangoproject.com/zh-hans/2.1/]https://docs.djangoproject.com/zh-hans/2.1/
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com
文章标题:Django框架的快速入门笔记
本文作者:子非鱼
发布时间:2018-11-04, 11:19:29
最后更新:2018-10-14, 21:20:50
原始链接:https://Wangsr.cn/2018/11/04/2018-2018-10-06-Django框架的快速入门笔记/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。