Posted on:
Last modified:
django 使用正则指定路径,然后使用一个函数来处理对应的请求。
响应函数如下:
# views.py
from django.shortcuts import render
from django.http import HttpResponse
def add(request):
a = request.GET["a"]
b = request.GET["b"]
c = int(a) + int(b)
return HttpResponse(str(c))
def add2(request, a, b):
c = int(a) + int(b)
return HttpResponse(str(c))
注意每个函数都需要接受 request 作为第一个参数,GET 参数和 POST 参数都可以从 request 中读取。另外还可以使用从 url path 中读取数据,这些参数作为形参传递给对应的函数。
# urls.py
from calc import views as calc_views
urlpatterns = [
path("add/", calc_views.add, name="add"), # new
path("admin/", admin.site.urls),
path("add/<int:a>/<int:b>/", calc_views.add2, name="add2"), # django 2.0 的新语法,以前都是用正则分组
]
其中的 name 可以用在模板中,这样就不用写死 url 了。<a href="{% url 'add2' 4 5 %}">link</a>
response 对象可以当做字典使用,向其中复制就可以设定响应的头部
from django.http import HttpResponse
def add(request):
a = request.GET["a"]
b = request.GET["b"]
c = int(a) + int(b)
response = HttpResponse(str(c))
response["Powered-By"] = "django"
return response
在 urls.py 中可以设定 url 到具体函数的映射,但是 url 也是经常要随业务改动的,比如从 add/
变成了 plus/
。当我们在某个网页中需要链接到某个页面的时候,不希望写死 url,这时候可以使用 url reverse 的功能,使用 name 反向获取 url。
# urls.py
path("add/<int:a>/<int:b>/", calc_views.add2, name="add2")
# other.py
from django.urls import reverse
url = reverse("add2")
© 2016-2022 Yifei Kong. Powered by ynotes
All contents are under the CC-BY-NC-SA license, if not otherwise specified.
Opinions expressed here are solely my own and do not express the views or opinions of my employer.
友情链接: MySQL 教程站