django基礎

1. 路由系統

1.1 格式介紹

'''
urlpatterns = [
     url(正則表達式, views視圖函數,參數,別名),
]

參數說明:
 一個正則表達式字符串
 一個可調用對象,一般爲一個視圖函數或一個指定視圖函數路徑的字符串
 可選的要傳遞給視圖函數的默認參數(字典形式)
 一個可選的name參數
 '''

1.2 匹配開頭結束

  正則表達式:html

  1. 以**開頭,利用^,例如:url(r'^index/', views.index),
  2. 以**結尾,利用$,例如:url(r'index/$', views.index),
  3. 經過域名進行訪問,顯示默認首頁,例如:url(r'^$', views.index),

1.3 無名分組

url(r'^bbs/article/(\d+)/$',views.article_year),
url(r'^bbs/article/(\d+)/(\d+)$',views.article_yearMonth),

def article_year(request,year):
    pass

def article_yearMonth(request,year,month):
    pass 

1.4 有名分組

  在Python 正則表達式中,命名正則表達式組的語法是(?P<name>pattern),其中name 是組的名稱,pattern 是要匹配的模式。前端

url(r'^bbs/article/(?P<year_id>\d+)/(?P<month_id>\d+)$',views.article_yearMonth),

def article_yearMonth(request,month_id,year_id):
    pass

1.5 路由分發

#Including another URLconf
#    1. Import the include() function: from django.conf.urls import url, include
#    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))

from django.conf.urls import include, url

urlpatterns = [
   url(r'^admin/', admin.site.urls),
   url(r'^blog/', include('blog.urls')),
]

1.6 反向地址解析

  利用別名,進行地址反向解析正則表達式

  是在render方法中,進行反向解析的sql

1.7 Response

Httpresponse()        返回字符串

render(request,template_name,context)
結合一個給定的摸版和一個給定的上下文字典,並返回一個渲染後的HttpResponse對象
參數說明:
    1.request:用於生產響應的請求對象
    2.template_name:要使用的模板的完整名稱,可選參數
    3.context:添加到模板上下文的一個字典,默認是一個空字典。例如字典中的某個值是可調用的,視圖將在渲染模板以前調用
    4.content_type:生成的文檔要使用的MIME類型。默認爲DEFAULT_CONTENT_TYPE設置的值
    5.status:響應的狀態碼。默認爲200

redirect(跳轉,重定向)
    redirct("/路徑/")
    模擬用戶點擊submit請求:
    請求url:http://127.0.0.1:8000/login/
        1.請求url:/login/ POST
        2.url(r'^login/',app01_views.login,name="login")
        3.login(request):驗證, if 成功,redirect("/index/")
    重定向請求
        請求路徑:http://127.0.0.1:8000/index/
        1.請求url:/index/ GET
        2.url(r'^index/',app01_views.index,name="index")
        3.index(request):取出數據庫數據,渲染到index.html頁面
    用戶看到的是:渲染的index.html頁面
    
    redirect與render的區別:
        redirct發出兩次請求
        render發出一次請求 

2. template(模板層)

  模板語言:將具體數據嵌入到前端模板的語言數據庫

2.1 模板語言之變量

  語法:django

    {{ value }}安全

<h4>{{s}}</h4>
<h4>列表:{{ l.0 }}</h4>
<h4>列表:{{ l.2 }}</h4>
<h4>字典:{{ dic.name }}</h4>
<h4>日期:{{ date.year }}</h4>
<h4>類對象列表:{{ person_list.0.name }}</h4>

 

  注意:句點符也能夠用來引用對象的方法(無參數方法)。app

2.2 模板之過濾器

  語法:函數

    {{obj|filter__name:param}}oop

  1.default

     一個變量是false或者爲空,使用給定的默認值。不然,使用變量的值。例如:

    {{ value|default:"nothing" }}

  2.length

    返回值的長度。它對字符串和列表都起做用。例如:

    {{ value|length }}

    若是 value 是 ['a', 'b', 'c', 'd'],那麼輸出是 4。

  3.filesizeformat

    將值格式化爲一個 「人類可讀的」 文件尺寸 (例如 '13 KB', '4.1 MB', '102 bytes', 等等)。例如:

    {{ value|filesizeformat }}

    若是 value 是 123456789,輸出將會是 117.7 MB。  

  4.date

    若是 value=datetime.datetime.now()

    {{ value|date:"Y-m-d" }}  

  5.slice

    若是 value="hello world"

    {{ value|slice:"2:-1" }}

  6.truncatechars

    若是字符串字符多於指定的字符數量,那麼會被截斷。截斷的字符串將以可翻譯的省略號序列(「...」)結尾。

    參數:要截斷的字符數

    例如:

    {{ value|truncatechars:9 }}

  7.safe

    Django的模板中會對HTML標籤和JS等語法標籤進行自動轉義,緣由顯而易見,這樣是爲了安全。例如:

    value="<a href="">點擊</a>"

    {{ value|safe}}

3. Model

  ORM是數據庫表與類的映射關係

  映射關係:

    表名         <------->         類名

    字段         <------->         屬性

    表記錄     <------->         類實例對象

  經過logging能夠查看翻譯成的sql語句

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console':{
            'level':'DEBUG',
            'class':'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'propagate': True,
            'level':'DEBUG',
        },
    }
} 

3.1 查詢

  查詢全部

bookList = models.Book.objects.all()

  進行模糊查詢

bookList = models.Book.objects.filter(title__contains=keyword)

3.2 增長

  方式一:

models.Book.objects.create(title=title,pubDate=pubdate)

  方式二:

book_obj = Book(title="西遊記", pubdate=pubdate)
book_obj.save()

3.3 刪除

models.Book.objects.filter(id=id).delete()

3.4 編輯

models.Book.objects.filter(id=id).update(title=title,pubdate=pubdate)

3.5 列表序號

    {% for book_obj in bookList %}
        <tr>
            <td>{{ forloop.counter }}</td>
            <td>{{ book_obj.title }}</td>
            <td>{{ book_obj.pubDate|date:"Y-m-d" }}</td>
            <td>{{ book_obj.price }}</td>
            <td>{{ book_obj.publish }}</td>
            <td>
                <a href="/edit/{{ book_obj.id }}"><button class="btn btn-info">編輯</button></a>
                <a href="/del/{{ book_obj.id }}"><button class="btn btn-danger">刪除</button></a>
            </td>
        </tr>
    {% endfor %}
相關文章
相關標籤/搜索