国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Django(part3)

2019-11-14 17:35:43
字體:
來源:轉載
供稿:網友
  1. URLConf:負責url到view的map,就是一個urls.py module,通常在PRoject和app級別都要定義,
    #mysite/urls.pyfrom django.conf.urls import patterns, include, urlfrom django.contrib import adminurlpatterns = patterns('',    url(r'^polls/', include('polls.urls')),    url(r'^admin/', include(admin.site.urls)),)#polls/urls.pyfrom django.conf.urls import patterns, urlfrom polls import viewsurlpatterns = patterns('',    url(r'^$', views.index, name='index'),
    #name是url的名字,可以在template中使用


    url(r
    '^(?P<question_id>/d+)/$', views.detail, name='detail'),)
    如果要去到”/polls/34/”,django的處理如下:
    • 首先根據setting.py中指定的ROOT_URLConf的值,本例是mysite.urls,django會load mysite.urls.py module
    • django會發現’^polls/’與”/polls/34/”匹配,不管/polls/后面是id還是其他內容都匹配
    • django會把”/polls/34/”中與regex匹配的字符串去掉,將剩下的”34/”傳給polls.urls,與polls.urls中的regex匹配后會傳參調用views.detail(request=<HttpRequest object>,question_id=’34’
  2. 每個Views.py中的函數都是一個view,view的職責包括:
    • 返回HttpResponse對象,包含返回內容
    • raise an exception,如Http404等
  3. Template:
    • django的TEMPLATE_LOADERS包含很多loader,loader確定如何去查找template
    • django的template可以都放在一個template目錄下,但通常各個app的template都放到自己的路徑下,路徑為polls/templates/polls/index.html,index.html就是template文件,app_directories.loader會按照這個路徑查找templat
  4. 示例模板:
    #polls/templates/polls/detail.html<h1>{{ question.question_text }}</h1><ul>{% for choice in question.choice_set.all %}    <li>{{ choice.choice_text }}</li>{% endfor %}</ul>
    question.choice_set.all會被解析成python代碼question.choice_set.all(),如果要在模板里添加hyperlink,可以使用如下方式:
    <li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li>#使用這種方式更好,可以去掉hardcode, ‘detail’是在urls.py中定義的url的名字<li><a href="{% url 'detail' question.id %}">{{ question.question_text }}</a></li>
  5. 為url指定名字空間,防止不同app的view同名
    #mysite/urls.pyfrom django.conf.urls import patterns, include, urlfrom django.contrib import adminurlpatterns = patterns('',    url(r'^polls/', include('polls.urls', namespace="polls")),    url(r'^admin/', include(admin.site.urls)),)#引用url時要加名字空間<li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>
  6. 常用的函數:
    • patterns(prefix,patterns):參數包含一個prefix和任意數量的url patterns,然會url patterns列表
    • url(regex,view,kwargs,name):
        • regex:匹配url的正則表達式
        • view:regex匹配時,django會調用view,以HttpRequest對象作為第一個參數,regex捕獲的其他匹配值作為其他參數。如果是simple capture,則值會按順序依次傳給view的函數,如果是named capture,值會作為keyWord arguments
        • kwargs:keyword arguments,kwargs存入字典再傳給view,很少用
        • name:給url命名
    • include():引入URLConf
    • render(request,templatepath,&hellip;):
      • request:HttpRequest對象
      • templaepath:template文件路徑
    • get_object_or_404(model,id): 如下代碼等同
      #效果等同try:        question = Question.objects.get(pk=question_id) except Question.DoesNotExist:        raise Http404question = get_object_or_404(Question, pk=question_id)
    • get_list_or_404():內部使用filter()函數而不是get()函數,list是空,rasie Http404

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 搜索| 慈利县| 宜州市| 涞水县| 乌兰浩特市| 江油市| 华宁县| 铅山县| 蒙自县| 呼伦贝尔市| 资兴市| 英德市| 定州市| 兴义市| 深圳市| 常宁市| 连江县| 南召县| 高青县| 临汾市| 昭通市| 清丰县| 温宿县| 如东县| 恩施市| 腾冲县| 西宁市| 绥棱县| 灵山县| 深圳市| 郓城县| 汪清县| 罗山县| 石城县| 始兴县| 渭南市| 朝阳县| 增城市| 湘潭县| 汨罗市| 天长市|