Django框架的快速入门笔记

安装Django

1
pip install django

创建项目

1
django-admin startproject mysite

将会生成以下目录文件:

1
2
3
4
5
6
7
mysite/
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
9
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py

编写视图控制函数

views.py添加以下内容:

1
2
3
4
5
6
from 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
    7
    from 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
    6
    from 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
2
3
4
5
6
7
8
9
10
11
12
polls/
__init__.py
admin.py
apps.py
templates/
polls/
index.html
migrations/
__init__.py
models.py
tests.py
views.py

index.html内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<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
<!doctype html>
<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参数字典的key

    1
    {{name}}
  • 获取POST上传的blob数据

    1
    2
    file = 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.pyALLOWED_HOSTS设置如下:

    1
    ALLOWED_HOSTS = ['*',]
  • 打开电脑的8000端口,设置入站规则即可。
    windows设置如图:
    windows设置防火墙
    三步缺一不可

    Django runserver配置https

  • pip命令安装以下包

    1
    2
    3
    pip 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整体的运行流程

参考链接

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" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏