成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > Django的get_absolute_url方法的使用

Django的get_absolute_url方法的使用

熱門標(biāo)簽:地圖標(biāo)注與注銷 南昌地圖標(biāo)注 西青語音電銷機器人哪家好 宿州電話機器人哪家好 旅游廁所地圖標(biāo)注怎么弄 電梯新時達(dá)系統(tǒng)外呼顯示e 成都呼叫中心外呼系統(tǒng)哪家強 無錫智能外呼系統(tǒng)好用嗎 百應(yīng)電話機器人總部

本文主要的目的是通過一個簡單的例子,展示`get_absolute_url`的用法,拋磚引玉,理解實例方法的本質(zhì),能夠在不同的業(yè)務(wù)場景下,靈活多變,完成需求。

環(huán)境:Python3.8 + Django3.0

我們都知道,在反向解析url的時候,Django提供了三種方法,幫我們替代硬編碼的方式,也就是:

  • 在模板中:使用url模板標(biāo)簽。
  • 在Python代碼中:使用reverse()函數(shù)。
  • 在更高層的與處理Django模型實例相關(guān)的代碼中:使用get_absolute_url方法。

前面兩種方式比較常見,我們也很熟悉,但是最后的get_absolute_url方法,可能很多人就不明白具體如何使用了。下面我們通過一個簡單易懂的例子,來搞懂它的具體使用方法。

一、創(chuàng)建模型

首先,假設(shè)我們有下面的學(xué)生模型:

class Student(models.Model):

    sex_choice = [
        ('man', '男性'),
        ('woman', '女性'),
    ]

    name = models.CharField(max_length=128)
    sex = models.CharField(max_length=8, choices=sex_choice)
    tel = models.PositiveIntegerField()

    def __str__(self):
        return self.name

學(xué)生包含姓名、性別和電話。

不要忘記makemigrations和migrate。

然后我們接入admin后臺,隨意手動創(chuàng)建一些學(xué)生實例:

from django.contrib import admin
from app.models import Student


class StudentAdmin(admin.ModelAdmin):
    list_display = ['name', 'sex', 'tel']


admin.site.register(Student, StudentAdmin)

二、設(shè)計urls

我們編寫了下面的urls:

from django.contrib import admin
from django.urls import path
from app import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('students/', views.students),
    path('man/int:id>/', views.man, name='man'),
    path('woman/int:id>/', views.woman, name='woman'),
]

這里的students比較好理解,查看所有的學(xué)生列表。但是man和woman兩條路由的設(shè)計就屬于特殊需求了,按理說應(yīng)該直接一條路由即可,不就是查看某個具體學(xué)生的信息嘛。

但如果業(yè)務(wù)需求是這樣的:男生和女生必須使用不同的url進(jìn)行訪問!

那就只能這么分開編寫成兩條路由了。

注意url中的name屬性,用于后面的反向路由解析。

三、編寫視圖

我們編寫了下面的視圖,很簡單:

from django.shortcuts import render
from app import models


def students(request):
    s = models.Student.objects.all()
    return render(request, 'students.html', locals())


def man(request, id):
    student = models.Student.objects.get(id=id)
    return render(request, 'student.html', locals())


def woman(request, id):
    student = models.Student.objects.get(id=id)
    return render(request, 'student.html', locals())

四、HTML模板

首先看看student.html

!DOCTYPE html>
html lang="en">
head>
    meta charset="UTF-8">
    title>Title/title>
/head>
body>

        p>name: {{ student.name }}/p>
        p>sex: {{ student.sex }}/p>
        p>tel: {{ student.tel }}/p>

/body>
/html>

很簡單,就是展示學(xué)生的信息,沒有需要關(guān)注的,僅僅用于表示運行正常,信息顯示正確。

重點是students.html(多了個s,復(fù)數(shù)形式):

!DOCTYPE html>
html lang="en">
head>
    meta charset="UTF-8">
    title>Title/title>
/head>
body>
h4>歡迎訪問liujiangblog.com, 學(xué)習(xí)更多Django教程/h4>
    
    
{% for student in s %}    
    {% if student.sex == 'man' %}
        p>
            姓名:{{ student.name }}   nbsp;nbsp;nbsp;nbsp;
            詳情:a href="{% url 'man' student.id %}" rel="external nofollow" >{% url 'man' student.id %}/a>
        /p>
    {% else %}
        p>
            姓名:{{ student.name }}   nbsp;nbsp;nbsp;nbsp;
            詳情:a href="{% url 'woman' student.id %}" rel="external nofollow" >{% url 'woman' student.id %}/a>
        /p>
    {% endif %}    
{% endfor %}

/body>
/html>

通過if標(biāo)簽的判斷,決定最終生成的url是哪種。這里使用了Django內(nèi)置的url模板標(biāo)簽語法。

訪問students/頁面顯示結(jié)果:

點擊任何一條學(xué)生鏈接都可以正常跳轉(zhuǎn)到詳情頁面。

五、使用get_absolute_url方法

上面的代碼實現(xiàn)了業(yè)務(wù)需求,男生和女生自動生成了不一樣的url,而不是我們慣例的/student/,整個過程也很簡單,比較好理解。

但是,這里有個不足之處,那就是區(qū)分男女生的邏輯放在了HTML模板文件中,這不是個好的做法,也不優(yōu)雅。

實際上我們可以使用get_absolute_url方法,在Python代碼中實現(xiàn)這一功能。

首先,修改Student模型,添加get_absolute_url方法:

class Student(models.Model):

    sex_choice = [
        ('man', '男性'),
        ('woman', '女性'),
    ]

    name = models.CharField(max_length=128)
    sex = models.CharField(max_length=8, choices=sex_choice)
    tel = models.PositiveIntegerField()

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        from django.urls import reverse
        if self.sex == 'man':
            return reverse('man', args=(self.id,))
        else:
            return reverse('woman', args=(self.id,))

get_absolute_url方法中,我們導(dǎo)入了reverse,這是Django提供的反向解析功能。

reverse能避免我們對url進(jìn)行硬編碼,它接收多種類型的參數(shù),可以是一個視圖名,也可以是一個url的name。相關(guān)的參數(shù)通過args傳遞,這是一個元組,有順序。

上面的代碼中,通過if/else判斷,根據(jù)性別的不同,解析出男女生對應(yīng)的url。

然后,在students.html中,我們就可以修改成下面的樣子:

body>
h4>歡迎訪問liujiangblog.com, 學(xué)習(xí)更多Django教程/h4>

{% for student in s %}
    p>
        姓名:{{ student.name }}   nbsp;nbsp;nbsp;nbsp;
        詳情:a href="{{ student.get_absolute_url }}" rel="external nofollow" >{{ student.get_absolute_url }}/a>
    /p>
{% endfor %}

/body>

首先,沒有if/else模板標(biāo)簽了。其次使用{{ student.get_absolute_url }}來代替url模板標(biāo)簽。

student是Student模型類的一個實例,它可以訪問類中定義的get_absolute_url方法,從而進(jìn)入if/else判斷,然后根據(jù)性別的不同,reverse出不同的url字符串,并在HTML模板中展示出來。

整個HTML模板顯得更加簡潔優(yōu)雅,最后的頁面結(jié)果也是完全一樣的。實際上,這里也體現(xiàn)出了Django的模型層和模板層的高度配合。

六、總結(jié)思考

例子很簡單,無非就是在Student模型中添加了一個get_absolute_url方法。但是如果仔細(xì)思考一下我們會發(fā)現(xiàn)這里面有很多體現(xiàn)語言特點的東西:

Django本身沒有實現(xiàn)一個基本的get_absolute_url方法,在models.Model中也沒有get_absolute_url方法的影子,所以這個方法其實只是個思路,沒有實質(zhì)。

get_absolute_url方法本質(zhì)上只是一個類的實例方法,既然Django內(nèi)部的代碼沒有實現(xiàn)它,那么實際上我們可以給它任意命名,比如改成get_url。你可以試試,它絕對能正常工作。但要小心的是,Django核心源碼雖然沒有定義get_absolute_url方法,在admin后臺和feed框架等地方卻可能使用了這個get_absolute_url方法,所以在非必須時,不要修改這個方法名。

繼續(xù)拓展思維,既然可以自定義get_absolute_url方法,那我可不可以在模型中添加任何我需要的實例方法呢?當(dāng)然可以!并且這是最強大最靈活的方式!比如根據(jù)用戶的不同,為模型添加一個user_control方法,提供不同的信息,控制訪問權(quán)限,切換頁面主題等等。

到此這篇關(guān)于Django的get_absolute_url方法的使用的文章就介紹到這了,更多相關(guān)Django get_absolute_url方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Django靜態(tài)資源URL STATIC_ROOT的配置方法
  • Django URL傳遞參數(shù)的方法總結(jié)
  • Django中URL的參數(shù)傳遞的實現(xiàn)
  • 在Django中URL正則表達(dá)式匹配的方法
  • Django url,從一個頁面調(diào)到另個頁面的方法
  • Django web框架使用url path name詳解
  • Django框架教程之正則表達(dá)式URL誤區(qū)詳解
  • Django中URL視圖函數(shù)的一些高級概念介紹
  • 獲取Django項目的全部url方法詳解

標(biāo)簽:辛集 許昌 渭南 雅安 濰坊 贛州 西安 七臺河

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Django的get_absolute_url方法的使用》,本文關(guān)鍵詞  Django,的,get,absolute,url,方法,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Django的get_absolute_url方法的使用》相關(guān)的同類信息!
  • 本頁收集關(guān)于Django的get_absolute_url方法的使用的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    亚洲日韩欧美视频一区| 狠狠狠色丁香婷婷综合久久五月| 成人短片线上看| 91青青在线视频| 国产乱妇乱子在线播视频播放网站| sese在线播放| 深夜福利日韩在线看| 国产又粗又长又爽又黄的视频| 你懂的一区二区| 中文日韩欧美| 日韩av电影在线观看| www.国产精品| 亚洲日本国产精品| 黄色视屏网站在线免费观看| 日本xxxxxxxxx18| 国产精品18久久久久久vr| 天堂在线第六区| 日韩写真欧美这视频| 特级西西人体wwwww| 日本不卡免费一区| 色天天综合狠狠色| 欧美激情18p| 欧美精品在线播放| 九九热线视频只有这里最精品| 久久久久久国产精品三级玉女聊斋| 夜夜爽妓女8888视频免费观看| 热re99久久国产精品| 亚洲黄色免费视频| 麻豆明星ai换脸视频| 久久久久九九视频| 免费一区二区三区四区| 精品无码av一区二区三区| 国产女主播在线| 久久婷婷五月综合色国产香蕉| 日本h片久久| 开心丁香婷婷深爱五月| 色偷偷亚洲第一成人综合网址| 欧美片在线播放| 色妇色综合久久夜夜| 欧美视频13p| 久久激情视频| 精品国产一级| 精品欧美一区二区久久久久| 在线日本成人| 成人在线免费看视频| 一区二区三区影院| 少妇久久久久久被弄高潮| 4kfree性满足欧美hd18| 亚洲国产欧美在线人成| 日本精品久久久| 蜜臀尤物一区二区三区直播| 免费视频一区| 亚洲人成精品久久久久久| 亚洲高清久久久久久| 不卡视频一区| 国内成+人亚洲+欧美+综合在线| 国产精品一区二区三区成人| 中文字幕大看焦在线看| 亚洲人成网站在线在线观看| 日韩一区二区三区免费播放| 精品成人国产在线观看男人呻吟| 在线视频成人| 超碰在线人人干| 国产网站免费在线观看| av电影免费| 国产精品久久..4399| 亚洲男人的天堂网站| www.亚洲男人天堂| 国内精品视频| 色戒汤唯在线观看| 欧美xxxx18性欧美| 特黄特黄一级片| 欧美中文字幕精在线不卡| 亚洲精品在线视频观看| 欧美乱大交做爰xxxⅹ性3| 精品视频第一区| 国产伦理精品| 国产目拍亚洲精品99久久精品| 欧美亚一区二区三区| 欧美中文在线字幕| 欧美亚洲爱爱另类综合| 国产精品影院在线| 日本女人高潮视频| 图片区小说区国产精品视频| 人妻熟人中文字幕一区二区| 91国内在线| 国产欧美日韩免费观看| 亚洲视频小说| 给我免费观看片在线电影的| 国产妇女馒头高清泬20p多| 性xxxxfreexxxxx欧美丶| 四虎电影院在线观看| 成人免费公开视频| 亚洲香蕉在线观看| 在线观看操人| 亚洲狼人综合干| 欧美成人se01短视频在线看| 999精品视频| heyzo国产| 久久久久久久久久久国产| canopen超线视频网线的应用| 成人99免费视频| 四虎国产精品免费观看| 国产成人亚洲综合a∨婷婷| 黄色的视频在线观看免费| 亚洲乱码电影| 手机电影在线观看| 亚洲一区二区三区777| 精品国产一区二区三区四区| 椎名由奈jux491在线播放| 亚洲图片小说视频| 神马久久影视大全| 黄色网在线免费观看| 日韩电影免费观看高清完整版在线观看| 成人全视频在线观看在线播放高清| 国产精品海角社区在线观看| 国产三级视频在线播放| 男女激情网站| 亚洲永久精品大片| 日韩欧美的一区| 免费一看一级毛片| 欧美日韩国产在线一区| av在线理伦电影| 99福利在线观看| 国产精品xx| 免费人成精品欧美精品| 欧美视频三区在线播放| 精品久久久久久亚洲精品| 在线一区电影| 成人影视免费观看| 青草成人免费视频| 亚洲成avwww人| 免费av网站在线看| 免费观看国产成人| 色欲av永久无码精品无码蜜桃| 精品欧美一区二区久久久久| 任你躁av一区二区三区| 欧美乱大交xxxxx在线观看| 欧美激情在线观看| 国产91免费视频| 玖玖国产精品视频| 香蕉视频一区二区三区| 精品无人区乱码1区2区3区免费| gogo高清在线播放免费| 国产精品免费一区二区| 青青草视频网站| 99热在线国产| 精品国产网站在线观看| 午夜a一级毛片亚洲欧洲| 欧美在线免费看视频| 日韩美女天天操| 国产成年妇视频| 国产精品久久久久av电视剧| 精品久久中文字幕久久av| 中文字幕一区二区在线视频| 免费不卡av网站| 久久蜜桃香蕉精品一区二区三区| 日韩高清不卡一区二区| eeuss中文字幕| 日韩精品亚洲人成在线观看| 国产一级黄色录像| 1区2区3区视频| 日韩电影二区| 成人免费观看av| 性色av一区二区怡红| 99精品在线看| 国产激情综合| ...av二区三区久久精品| 一级片中文字幕| 貂蝉被到爽流白浆在线观看| 亚洲国产精品午夜在线观看| 亚洲欧美日本另类| 中文字幕日韩久久| 成人免费毛片东京热| 欧美日韩一区在线观看| 污污网站在线观看| 日韩精品在在线一区二区中文| 一级黄色片网站| 有码av在线| 加勒比婷婷色综合久久| 香蕉精品999视频一区二区| 91亚洲精品视频在线观看| 99re这里只有精品6| 好男人www社区在线视频夜恋| 亚洲高清在线看| 一区二区三区四区不卡视频| 国产欧美日韩综合精品二区| 99精品久久免费看蜜臀剧情介绍| 国产最新自拍视频| 99999精品视频| 69国产精品| 羞羞电影在线观看www| 欧区一欧区二欧区三| 五月婷婷之综合激情| av一区二区在线看| 国产精品国产一区| www.88av| 美女黄视频在线观看| 成人午夜剧场免费观看完整版| shkd中文字幕久久在线观看| 亚洲精品久久久久久下一站| 999在线精品视频| a级大片在线观看| 成人午夜精品久久久久久久蜜臀| 亚洲黄色网址大全| 中文字幕有码av| 色男人天堂综合再现| 日韩欧美不卡视频| 欧美日韩极品在线观看一区| 法国伦理少妇愉情| av免费播放网站| 亚洲精品高清视频在线观看| 一二三四社区欧美黄| 久久综合九色综合97婷婷| 美女国产精品| 国产一区喷水| 亚洲黑人在线| 欧美专区在线| 在线视频网站| 黄色激情在线观看| 亚洲无在线观看| www.色在线| 成人免费看黄网站| 久久精品国产一区二区三| 亚欧精品在线视频| 自拍视频在线看| 国产精品麻豆网站| 三上悠亚久久精品| 欧美日韩免费观看一区| 欧美freesex交免费视频| 日韩欧美视频一区二区三区四区| 久久久久久久久久久99999| 亚洲欧美一区二区三区久本道91| 免费亚洲电影在线| 日韩在线你懂得| 成人综合婷婷国产精品久久| 国产叼嘿网站免费观看不用充会员| 免费在线黄色片| 亚洲成人午夜电影| 久久全球大尺度高清视频| 国产精品二区三区四区| 日韩三级免费看| 青青草国产免费一区二区下载| 国产在线播放不卡| 91久久精品日日躁夜夜躁国产| 国产一二三区在线视频| 999在线观看视频| 国内精品久久久久| 久久精品视频中文字幕| 波多野结衣亚洲一二三| 99riav久久精品riav| 麻豆资源在线| 日韩欧美一二三| 日本黄色电影网站| 狠狠躁夜夜躁人人躁婷婷91| 国产一级在线视频| 久久久久久久有限公司| 成av人电影在线观看| theporn国产在线精品| 精品久久久三级| 懂色av蜜臀av粉嫩av分享吧| 欧美一区激情视频在线观看| ass精品国模裸体欣赏pics| 最近免费中文字幕中文高清百度| 亚洲国产精品成人精品| 粉嫩av懂色av蜜臀av分享| 亚洲精品mv在线观看| 欧美韩日一区| 伊人国产精品视频| 国产麻豆精品一区二区| 成人女保姆的销魂服务| 国产精品乱码人人做人人爱| 亚洲影院污污.| 在线免费观看黄色网址| 亚洲伊人婷婷| 登山的目的在线| 国产高清一区在线观看| 麻豆av免费看| 国产综合香蕉五月婷在线| 中文字幕av一区二区三区免费看| 伦理在线一区| 18禁免费观看网站| 不许穿内裤随时挨c调教h苏绵| 国产黄色激情视频| 搞黄视频在线观看| 污污网站免费观看| 亚洲一级片在线播放| 亚洲成a人在线观看| 91丨porny丨探花| 欧美性猛交一区二区三区| 99在线观看免费视频精品观看| 在线欧美成人| 福利一区视频在线观看| 波霸ol色综合网| 国产精品久久午夜夜伦鲁鲁| 在线观看成人av电影| 免费看欧美美女黄的网站| 中文字幕资源网在线观看| 97精品国产福利一区二区三区| 国产欧美日韩中文字幕在线| 色综合欧美在线| 久久久久久99精品| 91久久偷偷做嫩草影院| 亚洲综合免费观看高清完整版| 欧美一区二区三区视频在线观看| 欧美高清性hdvideosex| 亚洲午夜18毛片在线看| 国产精品久久久久久一区二区三区| 亚洲特级黄色片| 亚洲二区在线播放| 91福利资源站| 亚洲美女91| 一本久道久久综合中文字幕| 国产综合精品视频| 手机在线免费av| 中文字幕国内精品| 久久久久久久久久久久久女过产乱| 色一情一伦一子一伦一区| 美国三级日本三级久久99| 日韩资源在线观看| 日韩av高清在线| 丰满人妻熟女aⅴ一区| 欧美激情成人网| 伊人春色在线| 992tv在线观看| 午夜精品一区二区三区电影天堂| 丰满熟妇乱又伦| 欧美一区日本一区韩国一区|