最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django url,從一個頁面調(diào)到另個頁面的方法

 更新時間:2019年08月21日 09:33:19   作者:NeXTSTEP110  
今天小編就為大家分享一篇Django url,從一個頁面調(diào)到另個頁面的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

創(chuàng)建項目和應(yīng)用

django-admin startproject zqxt_views(項目名)
cd zqxt_views
python manage.py startapp calc(應(yīng)用名)

————–1.采用/add?a=4&b=5這樣GET方法進行—————————

修改 calc/view.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))

修改 zqxt_views/urls.py 文件,添加一個網(wǎng)址來對應(yīng)我們剛才新建的視圖函數(shù)。

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),
]

打開服務(wù)器并訪問

python manage.py runserver 8003

打開網(wǎng)址

http://127.0.0.1:8003/add/?a=4&b=5

————–2.采用/add/3/4這樣的網(wǎng)址的方式—————————

修改 calc/views.py 文件,再定義一個add2函數(shù)

def add2(request, a, b):
 c = int(a) + int(b)
 return HttpResponse(str(c))

接著修改 zqxt_views/urls.py 文件,再添加一個新的 url

url(r'^add/(\d+)/(\d+)/$',calc_views.add2,name='add2'),

我們可以看到網(wǎng)址中多了 (\d+), 正則表達式中 \d 代表一個數(shù)字,+ 代表一個或多個前面的字符,寫在一起 \d+ 就是一個或多個數(shù)字,用括號括起來的意思是保存為一個子組,每一個子組將作為一個參數(shù),被 views.py 中的對應(yīng)視圖函數(shù)接收。

我們再訪問 http://127.0.0.1:8003/add/4/5/ 就可以看到和剛才同樣的效果,但是這回網(wǎng)址更優(yōu)雅了

打開 zqxt_views/urls.py

from django.conf.urls import url
from django.contrib import admin
from calc import views as calc_views

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'),
]

在 url(r'^add/$',calc_views.add,name='add'),中,name='add'是用來干什么滴???

簡單說,name可用于在templates,models,views……中得到對應(yīng)的網(wǎng)址,相當于給“網(wǎng)址取了一個名字”,只要名字不變,網(wǎng)址變了也能通過名字獲取到。

為了繼續(xù)弄清楚這個問題,我們先建立一個首頁的視圖和url

修改 *calc/views.py*

from django.http import HttpResponse
from django.shortcuts import render


def index(request):
 return render(request, 'home.html')

render 是渲染模板

將‘calc'這個app加入到*zqxt_views/settings.py 中*

INSTALLED_APPS = [
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',

 'calc',
]

這樣,使用render的時候,Django會自動找到INSTALLED_APPS中列出的各個app下的templates中的文件。

提示:DEBUG=True的時候,Django可以自動找到各個app下static文件中的靜態(tài)文件(js,css,圖片,資源)

我們在calc這個app中新建一個templates文件夾,在templates中新建一個home.html

文件 calc/templates/home.html 中寫入以下內(nèi)容

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>title</title>
</head>
<body>
 <a href="/add/4/5" rel="external nofollow" >計算 4 + 5 </a>
</body>
</html>

修改zqxt_views/urls.py

urlpatterns = [
 url(r'^$', calc_views.index, name='home'),
 url(r'^add/$', calc_views.add, name='add'),
 url(r'^add/(\d+)/(\d+)/$', calc_views.add2, name='add2'),
 url(r'^admin/', admin.site.urls),
]

運行服務(wù)器python manage.py runserver 8004,訪問http://127.0.0.1:8004/

我們計算加法的時候用的是 /add/4/5/ ,后來需求發(fā)生變化,比如改成 /4_add_5/,但在網(wǎng)頁中,代碼中很多地方都寫死的 /add/4/5/,比如模板中可能是這么寫的

<a href="/add/4/5/" rel="external nofollow" rel="external nofollow" >計算 4+5</a>

如果這樣寫“死網(wǎng)址”,會使得在改了網(wǎng)址(正則)后,模板(template),視圖(views.py,比如用于URL跳轉(zhuǎn)),模型(models.py,獲取記錄訪問地址等)用了此網(wǎng)址的,都必須進行相應(yīng)的更改,修改的代價很大,一不小心,有的地方?jīng)]改過來,就不能用了。

reverse 接收 url 中的 name 作為第一個參數(shù),我們在代碼中就可以通過 reverse() 來獲取對應(yīng)的網(wǎng)址

我們在終端上輸入:python manage.py shell

>>> from django.core.urlresolvers import reverse # django 1.4.x - django 1.10.x

或者

>>> from django.urls import reverse # Django 1.10.x - Django 2.x 新的,更加規(guī)范了

>>> reverse('add2', args=(4,5))
u'/add/4/5/'
>>> reverse('add2', args=(444,555))
u'/add/444/555/'

在網(wǎng)頁模板中也是一樣,可以很方便的使用。

不帶參數(shù)的:
{% url 'name' %}
帶參數(shù)的:參數(shù)可以是變量名
{% url 'name' 參數(shù) %}

因此,我們將:templates/home.html 中

<a href="/add/4/5/" rel="external nofollow" rel="external nofollow" >link</a>改成
<a href="{% url 'add2' 4 5 %}" rel="external nofollow" >link</a>

這樣的話,當 urls.py 進行更改,前提是不改 name(這個參數(shù)設(shè)定好后不要輕易改),獲取的網(wǎng)址也會動態(tài)地跟著變,比如改成:

url(r'^new_add/(\d+)/(\d+)/$', calc_views.add2, name='add2'),

{% url ‘a(chǎn)dd2' 4 5 %}就會被渲染成/new_add/4/5/

有另外一個情況,如果我們原來收藏的一個網(wǎng)址,現(xiàn)在這個網(wǎng)址被廢了,現(xiàn)在有個新的網(wǎng)址,如何讓以前的/add/3/4自動跳轉(zhuǎn)到新的網(wǎng)址那?

具體的思路是,在view.py寫一個跳轉(zhuǎn)方法:

from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse

def old_add2_redirect(request, a, b):
 return HttpResponseRedirect(
 reverse('add2', args=(a, b))
 )

以上這篇Django url,從一個頁面調(diào)到另個頁面的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python生成可執(zhí)行文件之PyInstaller庫的使用方式

    Python生成可執(zhí)行文件之PyInstaller庫的使用方式

    PyInstaller是一個十分有用的第三方庫,通過對源文件打包,Python程序可以在沒有安裝Python的環(huán)境中運行,也可以作為一個獨立文件方便傳遞和管理,下面這篇文章主要給大家介紹了關(guān)于Python生成可執(zhí)行文件之PyInstaller庫的使用方式,需要的朋友可以參考下
    2022-04-04
  • Python編程實現(xiàn)雙鏈表,棧,隊列及二叉樹的方法示例

    Python編程實現(xiàn)雙鏈表,棧,隊列及二叉樹的方法示例

    這篇文章主要介紹了Python編程實現(xiàn)雙鏈表,棧,隊列及二叉樹的方法,結(jié)合具體實例形式分析了Python簡單實現(xiàn)數(shù)據(jù)結(jié)構(gòu)中雙鏈表,棧,隊列及二叉樹相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • Python中的OpenCV圖像腐蝕處理和膨脹處理

    Python中的OpenCV圖像腐蝕處理和膨脹處理

    這篇文章主要介紹了Python中的OpenCV圖像腐蝕處理和膨脹處理,OpenCV是一個跨平臺的計算機視覺庫,可用于開發(fā)實時的圖像處理、計算機視覺以及模式識別程序,需要的朋友可以參考下
    2023-08-08
  • 詳細介紹Python中的set集合

    詳細介紹Python中的set集合

    本文詳細介紹了Python中set集合的基本概念和詳細用法,希望對讀者朋友們有所幫助。需要的朋友可以參考下面具體的文章內(nèi)容
    2021-09-09
  • 談一談數(shù)組拼接tf.concat()和np.concatenate()的區(qū)別

    談一談數(shù)組拼接tf.concat()和np.concatenate()的區(qū)別

    今天小編就為大家分享一篇談?wù)剶?shù)組拼接tf.concat()和np.concatenate()的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python 操作mysql數(shù)據(jù)中fetchone()和fetchall()方式

    python 操作mysql數(shù)據(jù)中fetchone()和fetchall()方式

    這篇文章主要介紹了python 操作mysql數(shù)據(jù)中fetchone()和fetchall()方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python中int與str互轉(zhuǎn)方法

    python中int與str互轉(zhuǎn)方法

    最近學習python中的數(shù)據(jù)類型時,難免聯(lián)想到j(luò)ava中的基本型數(shù)據(jù)類型與引用型數(shù)據(jù)類型。接下來通過本文給大家介紹python中int與str互轉(zhuǎn),需要的朋友可以參考下
    2018-07-07
  • Python信息抽取之亂碼解決辦法

    Python信息抽取之亂碼解決辦法

    這篇文章主要介紹了Python信息抽取之亂碼解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • python 將dicom圖片轉(zhuǎn)換成jpg圖片的實例

    python 將dicom圖片轉(zhuǎn)換成jpg圖片的實例

    今天小編就為大家分享一篇python 將dicom圖片轉(zhuǎn)換成jpg圖片的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python實現(xiàn)json對值進行模糊搜索的示例詳解

    Python實現(xiàn)json對值進行模糊搜索的示例詳解

    我經(jīng)常使用json進行存儲配置,于是常常遇到這樣的問題:如果想要對某個數(shù)組里的值進行模糊搜索,同時輸出相關(guān)的其他數(shù)組相同位置的的值該如何實現(xiàn)呢?本文就來和大家詳細聊聊
    2023-01-01

最新評論

泗阳县| 含山县| 怀集县| 江油市| 贵德县| 淮南市| 乾安县| 天津市| 柘城县| 和田市| 临桂县| 察隅县| 绥化市| 塔河县| 龙南县| 绵阳市| 措美县| 长宁区| 天气| 汨罗市| 河间市| 济宁市| 南宫市| 新晃| 阜南县| 临夏县| 天等县| 若羌县| 岚皋县| 建阳市| 三原县| 安达市| 江门市| 康保县| 和田县| 平昌县| 普安县| 威海市| 武平县| 镇康县| 寿光市|