python--Django(三)視圖

來源:互聯網
上載者:User

標籤:引入   其他   mes   指定   views   namespace   rgs   mode   python   

Django的視圖

不同於其他語言的MVC模式,Django採用的是MVT模式,即Model、View、Template,這裡的View其實質就是其他語言中的Controller(emmm.....),而Template其實就是html檔案,所以原理其實大同小異,這裡就不多贅述

配置URL

Django中的預設路由在項目主目錄下的urls.py中,基本路由配置如下所示:

from django.urls import path, includefrom . import viewsurlpatterns = [    path(‘articles/2003/‘, views.special_case_2003),    path(‘articles/<int:year>/‘, views.year_archive),    path(‘articles/<int:year>/<int:month>/‘, views.month_archive),    path(‘articles/<int:year>/<int:month>/<slug:slug>/‘, views.article_detail),    path(‘‘, include(‘test.urls‘))                                                                                # 引入不同應用的url配置]

以上為普通匹配方式,其中有幾種能夠限制路由中參數類型的函數可以使用。

  • str: 匹配除路徑分隔字元‘/‘之外的任何非Null 字元串
  • int:匹配零或任何正整數
  • slug:匹配由ASCII字母或數字組成的任何slug字串,以及連字號‘-‘和底線‘_‘字元
  • uuid:匹配格式化的UUID
  • path:匹配任何非Null 字元串,包括路徑分隔字元 ‘/‘

使用Regex匹配

from django.urls import path, re_pathfrom . import viewsurlpatterns = [    path(‘articles/2003/‘, views.special_case_2003),    re_path(r‘^articles/(?P<year>[0-9]{4})/$‘, views.year_archive),                                                                        # ?P<year>意為指定參數的名字    re_path(r‘^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$‘, views.month_archive),    re_path(r‘^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<slug>[\w-]+)/$‘, views.article_detail),]

URL起別名
此例相對於PHP laravel架構中的route()用法,具體用法如下

# 路由中的配置from django.urls import path, includefrom test import viewsurlpatterns = [    path(‘‘, views.index, name=‘test-index‘),    path(‘/<int:num>‘, views.getNum)    path(‘‘, include(‘test.urls‘, namespace = ‘test‘))            #為include起別名]# 在template中的運用<a href="{% url ‘test-index‘ 此處可以跟參數 %}"></a># 在views中的運用from django.http import HttpResponseRedirectfrom django.urls import reversedef redirect_to_year(request):    year = 2006                                                                                                                                # 參數    return HttpResponseRedirect(reverse(‘test-index‘, args=(year,)))

python--Django(三)視圖

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.