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

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

Day_19-Django(二)-創(chuàng)新互聯(lián)

本節(jié)內(nèi)容概要:

成都地區(qū)優(yōu)秀IDC服務(wù)器托管提供商(創(chuàng)新互聯(lián)).為客戶提供專業(yè)的內(nèi)蒙古服務(wù)器托管,四川各地服務(wù)器托管,內(nèi)蒙古服務(wù)器托管、多線服務(wù)器托管.托管咨詢專線:028-86922220

一、路由系統(tǒng)URL

二、視圖

三、模板

四、ORM操作

問題1:Django請求生命周期

-> URL對應(yīng)關(guān)系(匹配) -> 視圖函數(shù) -> 返回用戶字符串
-> URL對應(yīng)關(guān)系(匹配) -> 視圖函數(shù) -> 打開一個HTML文件,讀取內(nèi)容

問題2:創(chuàng)建Django project

django-admin  startproject xxx

cd xxx

python manage.py startapp CMDB

創(chuàng)建項目的所有步驟

1. 創(chuàng)建Django工程
            django-admin startproject 工程名

    2. 創(chuàng)建APP
        cd 工程名
        python manage.py startapp cmdb

    3、靜態(tài)文件
        project.settings.py
        
        STATICFILES_DIRS = (
            os.path.join(BASE_DIR, "static"),
        )
    
    4、模板路徑
    
        DIRS ==>    [os.path.join(BASE_DIR,'templates'),]
        
    5、settings中
        
        middlerware        
            # 注釋 csrf
            
            
    6、定義路由規(guī)則
        url.py        
            "login" --> 函數(shù)名
            
    7、定義視圖函數(shù)
app下views.py def func(request):                # request.method   GET / POST                                  # http://127.0.0.1:8009/home?nid=123&name=alex                 # request.GET.get('',None)   # 獲取請求發(fā)來的而數(shù)據(jù)                                  # request.POST.get('',None)                                                   # return HttpResponse("字符串")                 # return render(request, "HTML模板的路徑")                 # return redirect('/只能填URL')
8、模板渲染
特殊的模板語言 -- {{ 變量名 }}     def func(request):         return render(request, "index.html", {'current_user': "alex"})              index.html               ..                      
`current_user`
                            ====> 最后生成的字符串               ..                      
alex
                   -- For循環(huán)     def func(request):         return render(request, "index.html", {'current_user': "alex", 'user_list': ['alex','eric']})              index.html               ..                      
`current_user`
                         
                    {% for row in user_list %}                                      {% if row == "alex" %}                         
  • {{ row }}
  •                     {% endif %}                                      {% endfor %}             
                                     #####索引#################      def func(request):         return render(request, "index.html", {                     'current_user': "alex",                      'user_list': ['alex','eric'],                      'user_dict': {'k1': 'v1', 'k2': 'v2'}})              index.html               ..                      
`current_user`
                          {{ user_list.1 }}               {{ user_dict.k1 }}               {{ user_dict.k2 }}                                  ###### 條件     def func(request):         return render(request, "index.html", {                     'current_user': "alex",                      "age": 18,                     'user_list': ['alex','eric'],                      'user_dict': {'k1': 'v1', 'k2': 'v2'}})              index.html               ..                      
`current_user`
                          {{ user_list.1 }}               {{ user_dict.k1 }}               {{ user_dict.k2 }}                           {% if age %}                 有年齡                 {% if age > 16 %}                     老男人                 {% else %}                     小鮮肉                 {% endif %}             {% else %}                 無年齡             {% endif %}                   

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

一、路由系統(tǒng)URL

1.三種方式

1、url(r'^index/', views.index),          url(r'^home/', views.Home.as_view()), 2、url(r'^detail-(\d+).html', views.detail),   3、url(r'^detail-(?P\d+)-(?P\d+).html', views.detail)

 ps:

def detail(request, *args,**kwargs):
pass

實戰(zhàn):

1.url(r'^detail-(\d+)-(\d+).html', views.detail),

def func(request, nid, uid):                              pass                       def func(request, *args):              args = (2,9)                              def func(request, *args, **kwargs):              args = (2,9)

2.url(r'^detail-(?P\d+)-(?P\d+).html', views.detail)

def func(request, nid, uid):    pass     def funct(request, **kwargs):     kwargs = {'nid': 1, 'uid': 3}     def func(request, *args, **kwargs):     args = (2,9)

 name

   對URL路由關(guān)系進(jìn)行命名, ***** 以后可以根據(jù)此名稱生成自己想要的URL *****

url(r'^asdfasdfasdf/', views.index, name='i1'), url(r'^yug/(\d+)/(\d+)/', views.index, name='i2'), url(r'^buy/(?P\d+)/(?P\d+)/', views.index, name='i3'), def func(request, *args, **kwargs):    from django.urls import reverse          url1 = reverse('i1')                              # asdfasdfasdf/     url2 = reverse('i2', args=(1,2,))                 # yug/1/2/     url3 = reverse('i3', kwargs={'pid': 1, "nid": 9}) # buy/1/9/      xxx.html          {% url "i1" %}               # asdfasdfasdf/     {% url "i2" 1 2 %}           # yug/1/2/     {% url "i3" pid=1 nid=9 %}   # buy/1/9/

注:
# 當(dāng)前的URL
request.path_info

多級路由

project/urls.py     from django.conf.urls import url,include     from django.contrib import admin     urlpatterns = [         url(r'^cmdb/', include("app01.urls")),         url(r'^monitor/', include("app02.urls")),     ]      app01/urls.py     from django.conf.urls import url,include     from django.contrib import admin     from app01 import views     urlpatterns = [         url(r'^login/', views.login),     ]      app02/urls.py     from django.conf.urls import url,include     from django.contrib import admin     from app02 import views     urlpatterns = [         url(r'^login/', views.login),     ]

 默認(rèn)值

命名空間

 a. project.urls.py

from django.conf.urls import url,include   urlpatterns = [     url(r'^a/', include('app01.urls', namespace='author-polls')),     url(r'^b/', include('app01.urls', namespace='publisher-polls')), ]

b. app01.urls.py

from django.conf.urls import url from app01 import views   app_name = 'app01'urlpatterns = [     url(r'^(?P\d+)/$', views.detail, name='detail') ]

c. app01.views.py

def detail(request, pk):     print(request.resolver_match)     return HttpResponse(pk)

以上定義帶命名空間的url之后,使用name生成URL時候,應(yīng)該如下:

  • v = reverse('app01:detail', kwargs={'pk':11})

  • {% url 'app01:detail' pk=12 pp=99 %}

django中的路由系統(tǒng)和其他語言的框架有所不同,在django中每一個請求的url都要有一條路由映射,這樣才能將請求交給對一個的view中的函數(shù)去處理。其他大部分的Web框架則是對一類的url請求做一條路由映射,從而是路由系統(tǒng)變得簡潔。

通過反射機(jī)制,為django開發(fā)一套動態(tài)的路由系統(tǒng)Demo: 點擊下載

二、視圖

1、獲取用戶請求數(shù)據(jù)

request.GET
request.POST
request.FILES

PS:
GET:獲取數(shù)據(jù)
POST:提交數(shù)據(jù)
2、checkbox等多選的內(nèi)容

request.POST.getlist()

3、上傳文件
# 上傳文件,form標(biāo)簽做特殊設(shè)置

obj = request.FILES.get('fafafa') obj.name f = open(obj.name, mode='wb')for item in obj.chunks(): f.write(item) f.close()

4、FBV & CBV
 function base view

url.py
index -> 函數(shù)名

view.py
def 函數(shù)(request):
...

====》
/index/ -> 函數(shù)名
/index/ -> 類
====》
建議:兩者都用

5、裝飾器

三、ORM

1.mysql和ORM對應(yīng)示例

select * from tb where id > 1     # 對應(yīng)關(guān)系models.tb.objects.filter(id__gt=1) models.tb.objects.filter(id=1) models.tb.objects.filter(id__lt=1)

1.根據(jù)類自動創(chuàng)建數(shù)據(jù)庫表

創(chuàng)建類

a. 先寫類

找到models.py:

from django.db import models

class UserInfo(models.Model):    # id列,自增,主鍵     # 用戶名列,字符串類型,指定長度     username = models.CharField(max_length=32)     password = models.CharField(max_length=64)

 找到如下添加最后一行:

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

 執(zhí)行命令

python manage.py makemigrations  python manage.py migrate

現(xiàn)在已經(jīng)創(chuàng)建了一個表:app01_userinfo

提示:如果你不是用的默認(rèn)數(shù)據(jù)庫那么你需要找到setting.py的DATABASE更改其內(nèi)容

DATABASES = {     'default': {     'ENGINE': 'django.db.backends.mysql',     'NAME':'dbname',     'USER': 'root',     'PASSWORD': 'xxx',     'HOST': '',     'PORT': '',     } }

 # 由于Django內(nèi)部連接MySQL時使用的是MySQLdb模塊,而python3中還無此模塊,所以需要使用pymysql來代替

Django默認(rèn)使用MySQLdb模塊鏈接MySQL
主動修改為pymysql,在project同名文件夾下的__init__文件中添加如下代碼即可:

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


分享標(biāo)題:Day_19-Django(二)-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://weahome.cn/article/giipd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部