真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Django基礎(chǔ)概念-創(chuàng)新互聯(lián)

Django

遵循MVC設(shè)計(jì)模式的框架,MVC是Model、View、Controller的三個(gè)單詞的簡(jiǎn)寫(xiě)。分別代表模型、視圖、控制器。
Django基礎(chǔ)概念

創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)土默特左旗,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18980820575
創(chuàng)建項(xiàng)目
  • 通過(guò)命令行方式,首先進(jìn)入到安裝了Django的虛擬環(huán)境中
  • 通過(guò)pycharm方式
    # 創(chuàng)建項(xiàng)目
    1、命令行:django-admin startproject [項(xiàng)目名稱]
    2、pycharm方式:文件->創(chuàng)建項(xiàng)目->選擇django。然后指定項(xiàng)目所在的路徑,以及python解釋器。
    #運(yùn)行項(xiàng)目
    python manage.py runserver
    可添加端口 python manage.py runserver 8088
    對(duì)公訪問(wèn)  python manage.py runserver 0.0.0.0 8088
項(xiàng)目結(jié)構(gòu)介紹
  • manage.py:和項(xiàng)目交互都基于這個(gè)文件,python manage.py [子命令]
  • settings.py:本項(xiàng)目的設(shè)置項(xiàng),所有和項(xiàng)目相關(guān)的配置都是放在這個(gè)里面
  • urls.py:用來(lái)配置URL路由的,比如訪問(wèn)http://127.0.0.1/news/ 是訪問(wèn)新聞列表頁(yè),這些東西就需要在這個(gè)文件中完成。
  • wsgi.py:項(xiàng)目與WSGI協(xié)議兼容的web服務(wù)器入口,部署的時(shí)候需要用到的,一般情況下也是不需要修改的。
創(chuàng)建app
python manage.py startapp django_1
視圖函數(shù)
  • 視圖函數(shù)的第一個(gè)參數(shù)必須是request,這個(gè)參數(shù)不能少
  • 視圖函數(shù)的返回值必須是django.http.response.HttpResponseBase的子類的對(duì)象。
URL傳遞參數(shù)
  • url映射
    • 要去urls.py文件中尋找映射是因?yàn)樵趕ettings.py文件中配置了ROOT_URLCONFurls.py。所有的django會(huì)去urls.py中尋找。
    • urls.py中我們所有的映射都應(yīng)該放在urlpatterns這個(gè)變量中。
    • 所有的映射不是隨便寫(xiě)的,而是使用path函數(shù)或者是re_path函數(shù)進(jìn)行包裝的。
  • url傳參數(shù)
    • 采用在url中使用變量的方式:在path的第一個(gè)參數(shù)中,使用<參數(shù)名>的方式傳遞參數(shù),然后在視圖函數(shù)中也要寫(xiě)一個(gè)參數(shù)。視圖函數(shù)中的參數(shù)必須和url中的參數(shù)名稱保持一致,不然找不到這個(gè)參數(shù)。
    • 采用查詢字符串的方式:在url中不需要單獨(dú)的匹配查詢字符串的部分,只需要在視圖函數(shù)中使用request.GET.get('參數(shù)名稱')的方式來(lái)獲取。代碼如下:
      def author_detail(request):
      author_id = request.GET['id']
      text = '作者的id是:%s' % author_id
      return HttpResponse(text)

      因?yàn)椴樵冏址褂玫氖?code>GET請(qǐng)求,所以我們通過(guò)request.GET來(lái)獲取參數(shù),并且因?yàn)?code>GET是一個(gè)類似于字典的數(shù)據(jù)類型,所有獲取值跟字典的方式都是一樣的。

url命名
  • 需要url命名的原因
    因?yàn)閡rl是經(jīng)常變化的,寫(xiě)死可能會(huì)經(jīng)常修改代碼。給url取個(gè)名字以后使用url的時(shí)候就使用它的名字進(jìn)行反轉(zhuǎn)就可以了。
  • 如何給一個(gè)url指定名稱
    在path函數(shù)中,傳遞一個(gè)name參數(shù)就可以指定。

    # urls.py
    from django.urls import path
    from . import views
    urlpatterns = [
        path('',views.index,name='index'),
        path('signin/',views.login,name='login')
    ]
    
    # views.py
    from django.http import HttpResponse
    from django.shortcuts import redirect,reverse
    
    def index(request):
        username = request.GET.get('username')
        if username:
            return HttpResponse('首頁(yè)')
        else:
            return redirect(reverse('login'))
  • 應(yīng)用命名空間
    在多個(gè)app之間,有可能產(chǎn)生同名的url。這時(shí)為了避免反轉(zhuǎn)url的時(shí)候產(chǎn)生混淆,可以使用應(yīng)用命名空間來(lái)做區(qū)分。定義應(yīng)用命名空間非常簡(jiǎn)單,只要在app的urls.py中定義一個(gè)叫做app_name的變量來(lái)指定這個(gè)應(yīng)用的命名空間即可。

    # urls.py
    from django.urls import path
    from . import views
    app_name = 'front'
    
    urlpatterns = [
        path('',views.index,name='index'),
        path('signin/',views.login,name='login')
    ]
    
    # views.py
    from django.http import HttpResponse
    from django.shortcuts import redirect,reverse
    
    def index(request):
        username = request.GET.get('username')
        if username:
            return HttpResponse('首頁(yè)')
        else:
            return redirect(reverse('front:login'))
  • 應(yīng)用命名空間和實(shí)例名空間
    # 一個(gè)app可以創(chuàng)建多個(gè)實(shí)例,可以使用多個(gè)url映射同一個(gè)app。在做反轉(zhuǎn)的時(shí)候使用應(yīng)用命名空間,那么就會(huì)發(fā)生混淆,為了避免這個(gè)問(wèn)題就可以使用實(shí)例命名空間。在include函數(shù)中傳遞一個(gè)namespace變量即可。
    # urls.py 
    from django.urls import path,include
    urlpattterns = [
    path('',include('front.urls')),
    path('cms1/',include('cms.urls',namespace='cms1')),
    path('cms2/',include('cms.urls',namespace='cms2'))
    ]
url分層模塊化

多個(gè)app后主app的urls.py里的urlpatterns會(huì)寫(xiě)入過(guò)多路徑,可通過(guò)在app里創(chuàng)建自身app對(duì)應(yīng)的urls.py來(lái)方便路徑轉(zhuǎn)發(fā)。

# 主urls.py,使用include函數(shù)包含子urls.py
from django.urls import path,include

urlpattterns = [
    path('book/',include('book.urls'))
    # 以book開(kāi)頭的url都會(huì)轉(zhuǎn)到book app下的urls.py
]

# book app的 urls.py
from django.urls import path
from . import views

urlpattterns = [
    path('',views.book),
    path('detail/',views.book_detail),
    path('list/',views.book_list),
]
reverse函數(shù)補(bǔ)充

1、如果反轉(zhuǎn)url的時(shí)候,需要添加參數(shù),那么可以傳遞kwargs參數(shù)到reverse函數(shù)中。
2、如果想要添加查詢字符串的參數(shù),則必須手動(dòng)的
進(jìn)行拼接。

# views.py
from django.http import HttpResponse
from django.shortcuts import reverse,redirect

def index(request):
    username = request.GET.get('username')
    if username:
        return HttpResponse("首頁(yè)")
    else:
        # login_url = reverse('login') + "?next=/"
        # return redirect(login_url)
        detail_url = reverse('detail',kwargs={'article_id':1,'page':2})
        return redirect(detail_url)

def login(request):
    return HttpResponse("登錄頁(yè)面")

def article_detail(request,article_id):
    text = '您的文章id是:%s' % article_id
    return HttpResponse(text)

# urls.py
from django.urls import path
from front import views

urlpatterns = [
    path('',views.index,name='index'),
    path('login/',views.login,name='login'),
    path('detail///',views.article_detail,name='detail')
]

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


網(wǎng)站標(biāo)題:Django基礎(chǔ)概念-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)地址:http://weahome.cn/article/codidg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部