如何利用url傳參數 ?

[root@localhost calc]# tree -F
.
|-- admin.py
|-- apps.py
|-- __init__.py
|-- migrations/
|   |-- __init__.py
|   `-- __pycache__/
|       `-- __init__.cpython-35.pyc
|-- models.py
|-- tests.py
`-- views.py
在mysite / urls.py
from django.conf.urls import url
from django.contrib import admin
from calc import views as calc_views
urlpatterns = [
    url(r'^add/$', calc_views.add, name='add'),  # 注意修改了這一行
    url(r'^admin/', admin.site.urls),
]
在calc / 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))
  • 通過request['參數名']獲取參數 , request.GET 類似于一個字典 , 更好的辦法是用 request.GET.get('a', 0) , 當沒有傳遞 a 的時候默認 a 為 0
image.png

補充:

除了使用/?a=3&b=4傳參 , Django還支持使用/3/4這種方式傳遞參數 。
  • 具體方法:
    1.修改 calc / views.py 中的
def add2(request,a,b):
    c = int(a)+int(b)
    return HttpResponse(str(c))

然后再修改 mysites / urls.py 下的

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^add/$',calc_views.add,name='add'),
    url(r'^add/(\d+)/(\d+)/$',calc_views.add2,name='add2'),
]
  • 用括號括起來的意思是保存為一個子組,每一個子組將作為一個參數,被 views.py 中的對應視圖函數接收。中間不放 / 也可以 。
image.png

為了防止部分程序員搞不懂正則表達式中傳遞的變量是干什么用的 , 有時候會使用 :

url(r'^(?P<question_id>[0-9]+)/$', views.detail, name='detail'),

# 其中的 ?P<question_id> 可有可無 , 相當于助記符 。問號?不能忘了 !!!!!!
# ?P<question_id> 是Python正則表達式中的一種語法糖。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容