python框架django的使用_Python Django框架用法完全攻略

本文介绍了Django这个Python编写的免费开源Web框架,详细讲述了如何创建Hello World项目,包括项目结构、启动服务器。接着讨论了Django的路由与URL构造、Request对象的基本使用、GET和POST请求传参,以及CSRF问题的解决方案。此外,还涵盖了Cookie与Session在Django中的应用,以及模板的渲染方法。
摘要由CSDN通过智能技术生成

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。代码如下:

test

get 请求

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 进行渲染,以达到我们想要的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值