概述
Django 是一个免费开源高级的 Web 网站框架。是用 Python 编写的,下面就来进行具体介绍。
Django框架的第一个程序——Hello World
使用框架创建 HeIIoWorId 项目,具体代码如下:
django-admin startproject HelloWorld
HelloWorld 项目简介如表 1 所示。
表 1:HeIIoWorId 项目简介
相关文件
说明
HelloWorld
项目的容器
manage.py
一个实用的命令性工具,可让用户以各种方式与该 Django 项目进行交互
HelloWorld/__init__.py
一个空文件,告诉 Python 该目录是一个 Python 包
HelloWorld/settings.py
该 Django 项目的设置/配置
HelloWorld/urls.py
该 Django 项目的 URL 声明;一份由 Django 驱动的网站“目录"
HelloWorld/wsgi.py
一个与 WSGI 兼容的 Web 服务器的入口,以便运行项目
启动服务器,具体代码如下:
#启动服务器
python manage.py runserver 0.0.0.0:8000
此时访问http://127.0.0.1:8000/,就会看到如图 1 所示的内容,说明项目启动成功。
图 1:项目启动成功
Django框架的应用
1) 路由与构造URL
首先在 HelloWorld 项目中创建一个视图函数 views.py,引入 HttpResponse,它是用来向网页返回内容的,就像 Python 中的 print 一样,只不过 HttpResponse 负责把内容显示到网页上。
路由构造与实现,具体代码如下:
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello world!")
在路由文件 urls.py 中输入如下代码:
from django.conf.urls import url
from.import views
urlpatterns =[
url(r '^$', views.hello)
]
之后在 urls.py 中修改函数。
url( ) 函数可以接收 4 个参数,分别是两个必选参数 regex、view 和两个可选参数 kwargs、name。
regex:正则表达式,与之匹配的 URL会执行对应的第二个参数 view。
view:用于执行与正则表达式匹配的URL请求。
kwargs:视图使用的字典类型的参数。
name:用来反向获取 URL。
2) Request对象的基本使用
在每个视图函数中都会先引用 Request 对象,它是每个视图函数的第一个参数,其基本属性如表 2 所示。
表 2:Request 对象的基本属性
属性
描述
path
请求页面的全路径,不包括域名。例如,"/hello/"
method
请求中使用的 HTTP 方法的字符串表示。全大写表示。例如:
if request.method = 'GET':
do_something()
elif request.met hod = 'POST':
do_something_else()
GET
包含所有 HTTP GET 参数的类字典对象
POST
包含所有 HTTP POST 参数的类字典对象。
服务器接收到空的 POST 请求的情况也是有可能发生的。也就是说,表单通过 HTTP POST 方法提交请求,但在表单中可以没有数据。因此,不能使用语句 if request.POST 来判断是否使用了 HTTP POST 方法,而应该使用语句 if request.method = "POST"(参见本表的method属性)
注意:POST 属性不包括 file-upload 信息
3) GET和POST请求传参
我们在前面学习了 Flask 中提交表单的方式,那么,在 Django 中是怎么提交表单的呢?接下来进行演示。
首先在 helloworld/helloworld/views.py 中添加如下代码(注意:在这里引用了 templates/test.html,需要在 setting 中设置 TEMPLATES 下的 DIRS 为 [os.path.join(BASE_DIR,'templates')],目的就是在使用 test.html 的时候能找到相应的路径)。
GET 与 POST 请求传参,具体代码如下:
from django.http import HttpResponse
from django.shortcuts import render_to_response
#表单页面
def test_form(request):
return render_to_response("test.html")
#接收及处理表单请求数据
def test(request):
request.encoding='utf-8'
if request.method=="GE'T":
message ='你的方式为get '
elif request.method=="POST":
message = '你的方式为post'
else:
message="未识别!"
return HttpResponse(message)
然后在 helloworld/templates 目录下创建一个 HTML 文件 test.html。代码如下:
testget 请求
post 请求
最后在 helloworld/helloworld/urls.py 中添加对 URL 请求的处理。代码如下:
from django.conf.urls import include, url
from django.contrib import admin
from django.conf.urls import url
from.import views
urlpatterns =[
url (r'^search$', views.test_form),
url (r'^search-post$', views.test),
url (r'^search-get$', views.test),
]
注意:在提交表单时,如果直接提交,则会产生 CSRF 错误。此时先采用禁用的方式,即在 setting 中将 MIDDLEWARE_CLASSES 中的一个中间件 'django.middleware.csrf.CsrfViewMiddleware' 注释掉。
4) CSRF的问题
CSRF 的全称是 Cross Site Request Forgery。这是 Django 提供的防止伪装提交请求的功能。第一种解决方法就是将上文的中间件设置中的一项注释掉。第二种解决方法就是在 post 代码中添加{%csrf_token%}(注意:要首先在 views.py 中添加如下代码)。
CSRF 设置演示,具体代码如下:
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def some_view(request):
#..
并且在前端页面中加入如下代码:
{% csrf_token %}
5) Cookie与Session在Django中的应用
关于 Cookie 与 Session 的定义,在 Flask 中已经进行了阐述,接下来直接看看在 Django 中如何应用。
① Cookie 的应用:
获取 Cookie:request.COOKIES[key]; request.COOKIES.get(key);
设置 Cookie:reqeust.set_cookie(key, value);
删除 Cookie:reqeust.delete_cookie(key)。
Cookie 在 Django 中的增、删、改、查,具体代码如下:
from django.shortcuts import
render, HttpResponse, redirect, HttpResponseRedirect
from tools.resis_handler import connect_obj
def login(request):
resp = redirect('/list_display/')
resp.set_cookie ('k', 'a' ) #设置 Cookie 的值
return resp
#将Cookie的值展现出来
def display(request):
print(request.COOKIES['K'])
return HttpResponse('0K')
② Session 的应用
在操作 Session 之前,需要同步一下 Django 的数据库,具体代码如下:
python manage.py makemigrations
python manage.py migrate
③ 在 Django 中操作 Session:
获取 Session:request.session[key]; request.session.get(key);
设置 Session:request.session[key]=value;
删除 Session:del request[key]。
在 Django 中操作 Session,具体代码如下:
def login(request):
if request.method =='POST':
username = request.POST.get('username')
pwd = request.POST.get('pwd')
if username =='lisi' and pwd == '12345':
request.session['IS_LOGIN'] = True #设置 Session
return redirect('/home/')
return render(request, 'login.html')
def home(request):
#获取 Session 里的值
is_login = request.session.get('IS_LOGIN', False)
if is_login:
return HttpResponse('order')
else :
return redirect('/login/')
6) 模板的渲染
模板中的判断条件与循环语句等基本操作之前已有讲解,接下来讲解模板在 Django 中是如何被渲染的。主要通过 render( ) 函数来实现模板的渲染。
具体代码如下:
#views.py
from app.models import Author #引入一个类
def query(request):
#result=Author.objects.all()
#返回数据库查询结果(sql:select * from Author ),list类型
result=Author.objects.values_list()
return render(#将返回的数据渲染到页面中
request,
'query.html',
{
'title' : 'Query', #将查询结果渲染到 app/query.html 中的变量 result 中
'result':result,
'year':datetime.now().year,
}
)
通过上述的 render( ) 函数,就能将变量传递给 HTML 进行渲染,以达到我们想要的效果。
最后
以上就是踏实小蜜蜂为你收集整理的python框架django的使用_Python Django框架用法完全攻略的全部内容,希望文章能够帮你解决python框架django的使用_Python Django框架用法完全攻略所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复