django3模板使用

前言

在Django框架中坚弱,模板是可以幫助開發(fā)者快速生成呈現(xiàn)給用戶頁面的工具   模板的設(shè)計(jì)方式實(shí)現(xiàn)了我們MVT重VT的解耦,VT有著N:M的關(guān)系关摇,一個(gè)V可以調(diào)用任意T荒叶,一個(gè)T可以供任意V使用 模板處理分為兩個(gè)過程 加載 渲染

1. 加載靜態(tài)配置文件

在settings.py中最底下有一個(gè)叫做static的文件夾,主要用來加載一些模板中用到的資源输虱,提供給全局使用
這個(gè)靜態(tài)文件主要用來配置css些楣,html,圖片宪睹,文字文件等

STATIC_URL = ‘/static/’
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, ‘static’)
]

只后在模板中愁茁,首先加載靜態(tài)文件,之后調(diào)用靜態(tài)亭病,就不用寫絕對(duì)全路徑了

2. 使用靜態(tài)配置文件

a) 加載渲染靜態(tài)配置文件 模板中聲明

{% load static %} 或者 {% load staticfiles %}

在引用資源的時(shí)候使用

{% static ‘xxx’ %} xxx就是相當(dāng)于staticfiles_dirs的一個(gè)位置

b) 直接定義靜態(tài)配置

<img src="/static/images/mvc.png">

其中: 展示static文件夾下有一個(gè)images文件夾鹅很,下面有一個(gè)mvc.png的圖片

3. 模板摘要

3.1 模板主要有兩個(gè)部分
HTML靜態(tài)代碼
動(dòng)態(tài)插入的代碼段(挖坑,填坑)也就是block

3.2 動(dòng)態(tài)填充

模板中的動(dòng)態(tài)代碼斷除了做基本的靜態(tài)填充罪帖,還可以實(shí)現(xiàn)一些基本的運(yùn)算道宅,轉(zhuǎn)換和邏輯 如下:


image.png

模板中的變量: 視圖傳遞給模板的數(shù)據(jù) 標(biāo)準(zhǔn)標(biāo)識(shí)符規(guī)則 語法 {{ var }} 如果變量不存在,則插入空字符串

3.3 模板重的點(diǎn)語法
對(duì)象.屬性或者方法
索引  (student.0.name)
image.png
3.4模板中的小弊端
調(diào)用對(duì)象的方法胸蛛,不能傳遞參數(shù)

3.5 模板的標(biāo)簽
語法 {% tag %}
作用 a)加載外部傳入的變量
     b)在輸出中創(chuàng)建文本
     c)控制循環(huán)或邏輯

4. if表達(dá)式

格式1:

    {% if 表達(dá)式 %}

    {%  endif %}

格式2:

    {% if表達(dá)式 %}

    {% else %}

    {%  endif %}

格式3:

    {% if表達(dá)式 %}

    {% elif 表達(dá)式 %}

    {%  endif %}
image.png
5. for表達(dá)式

格式1:

 {% for 變量 in 列表 %}

    {% empty %}

    {% endfor %}
image.png

注意:當(dāng)列表為空或者不存在時(shí)污茵,執(zhí)行empty之后的語句

注意一下用法:
{{ forloop.counter }} 表示當(dāng)前是第幾次循環(huán),從1開始
{{ forloop.counter0 }} 表示當(dāng)前從第幾次循環(huán)葬项,從0開始
{{forloop.revcounter}}表示當(dāng)前是第幾次循環(huán)泞当,倒著數(shù)數(shù),到1停
{{forloop.revcounter0}}表示當(dāng)前是第幾次循環(huán)民珍,倒著數(shù)數(shù)襟士,到0停
{{forloop.first}}是否是第一個(gè)      布爾值
{{forloop.last}}是否是最后一個(gè)      布爾值

6. 注釋

6.1 注釋可見盗飒,可運(yùn)行
<!-- 注釋內(nèi)容 -->

6.1 單行注釋注釋不可見,不可運(yùn)行

單行注釋(頁面源碼中不會(huì)顯示注釋內(nèi)容)

{# 被注釋掉的內(nèi)容 #}

6.2 多行注釋注釋不可見陋桂,不可運(yùn)行
{% comment %}

{% endcomment %}
image.png

7. 過濾器

引入過濾器定義:{{var|過濾器}}逆趣, 作用:在變量顯示前修改 過濾器有很多,比如add / lower / upper

7.1 加法
    {{ p.page | add:5 }}
    沒有減法的過濾器嗜历,但是加法里面可以加負(fù)數(shù)
    {{ p.page | add: -5 }}

7.2 修改大小寫
    lower / upper : {{ p.pname | lower }} 變?yōu)樾懟蛘叽髮?
7.3 傳參數(shù)

過濾器可以傳遞參數(shù)宣渗,參數(shù)需要使用引號(hào)引起來。比如join: {{ student | join ‘=’ }} 如果值為空則設(shè)置默認(rèn)值:

    默認(rèn)值:default梨州,格式{{ var | default value }}
    如果變量沒有被提供或者為False痕囱,空,會(huì)使用默認(rèn)值

7.4 定制日期格式

根據(jù)制定格式轉(zhuǎn)換日期為字符串暴匠,處理時(shí)間的就是針對(duì)date進(jìn)行的轉(zhuǎn)換
{{ date:'Y年m月d日 H:i:s' }}
如果過濾器鞍恢,定義為小寫的y,則返回的數(shù)據(jù)為兩位的年每窖。如果寫的是大寫的Y帮掉,則返回的是四位的年
定義小寫的m,則返回?cái)?shù)字的月份窒典,如果定義大寫的M旭寿,則返回英文
定義小寫的h,則返回12小時(shí)制度的時(shí)崇败,如果定義的是大寫的H,則返回24小時(shí)制度的時(shí)

7.5 是否轉(zhuǎn)義

HTML轉(zhuǎn)義: 將接收到的數(shù)據(jù)當(dāng)成普通字符串處理還是當(dāng)成HTML代碼來渲染的一個(gè)問題 渲染成html: {{ code | safe }} 還可以使用autoscape渲染: {{ autoscape off }} {{ endautoscape }} 不渲染的話: {{ autoscape on }} {{ endautoscape }}

7.6 案例
<!--1\. 字符串‘Python’轉(zhuǎn)化為大寫,輸出結(jié)果為:PYTHON-->
{{ 'Python'|upper }}
<!--2\. 字符串‘PYTHON’轉(zhuǎn)化為小寫,輸出結(jié)果為:python-->
{{ 'PYTHON'|lower }}
<!--3\. 變量3增加4,輸出結(jié)果為:7-->
{{ 3|add:'4' }}
<!--4\. 第一個(gè)字符轉(zhuǎn)化成大寫形式,輸出結(jié)果為:Python-->
{{ 'python'|capfirst }}
<!--5\. 刪除指定符號(hào)的值,輸出結(jié)果為:studypythonisveryhappy -->
{{ 'study python is very happy'|cut:' ' }}
<!--6\. 輸出缺省值,輸出結(jié)果為:nothing-->
{{ ''|default:'nothing' }}
<!--7\. 返回第一個(gè)元素,輸出結(jié)果為:p-->
{{ 'python'|first }}
<!--8\. 返回最后一個(gè)元素,輸出結(jié)果為:n-->
{{ 'python'|last }}
<!--9\. 計(jì)算長(zhǎng)度,輸出結(jié)果為:6-->
{{ 'python'|length }}
<!--10\. 隨機(jī)一個(gè)元素,輸出隨機(jī)結(jié)果為:y-->
{{ 'python'|random }}

7.7 django內(nèi)建過濾器大全
1肩祥、add :將value的值增加2后室。使用形式為:{{ value | add: "2"}}。
2混狠、addslashes:在value中的引號(hào)前增加反斜線岸霹。使用形式為:{{ value | addslashes }}。
3将饺、capfirst:value的第一個(gè)字符轉(zhuǎn)化成大寫形式贡避。使用形式為:{{ value | capfirst }}。
4予弧、cut:從給定value中刪除所有arg的值刮吧。使用形式為:{{ value | cut:arg}}。
5掖蛤、date: 格式化時(shí)間格式杀捻。使用形式為:{{ value | date:"Y-m-d H:M:S" }}
6、default:如果value是False蚓庭,那么輸出使用缺省值致讥。使用形式:{{ value | default: "nothing" }}仅仆。例如,如果value是“”垢袱,那么輸出將是nothing
7墓拜、default_if_none:如果value是None,那么輸出將使用缺省值请契。使用形式:{{ value | default_if_none:"nothing" }}咳榜,例如,如果value是None姚糊,那么輸出將是nothing
8贿衍、dictsort:如果value的值是一個(gè)字典,那么返回值是按照關(guān)鍵字排序的結(jié)果
使用形式:{{ value | dictsort:"name"}}救恨,例如贸辈,
如果value是:
[{'name': 'python'},{'name': 'java'},{'name': 'c++'},]
那么,輸出是:
[{'name': 'c++'},{'name': 'java'},{'name': 'python'}, ]
9肠槽、dictsortreversed:如果value的值是一個(gè)字典擎淤,那么返回值是按照關(guān)鍵字排序的結(jié)果的反序。使用形式:與dictsort過濾器相同秸仙。
10嘴拢、divisibleby:如果value能夠被arg整除,那么返回值將是True寂纪。使用形式:{{ value | divisibleby:arg}}席吴,如果value是9,arg是3捞蛋,那么輸出將是True
11孝冒、escape:替換value中的某些字符,以適應(yīng)HTML格式。使用形式:{{ value | escape}}。例如昼浦,< 轉(zhuǎn)化為 &lt;> 轉(zhuǎn)化為 &gt;' 轉(zhuǎn)化為  &#39;" 轉(zhuǎn)化為  &quot;
13、filesizeformat:格式化value穴店,使其成為易讀的文件大小。使用形式:{{ value | filesizeformat }}拿穴。例如:13KB泣洞,4.1MB等。
14默色、first:返回列表/字符串中的第一個(gè)元素斜棚。使用形式:{{ value | first }}
16、iriencode:如果value中有非ASCII字符,那么將其進(jìn)行轉(zhuǎn)化成URL中適合的編碼弟蚀,如果value已經(jīng)進(jìn)行過URLENCODE蚤霞,改操作就不會(huì)再起作用。使用形式:{{value | iriencode}}
17义钉、join:使用指定的字符串連接一個(gè)list昧绣,作用如同python的str.join(list)。使用形式:{{ value | join:"arg"}}捶闸,如果value是['a','b','c']夜畴,arg是'//'那么輸出是a//b//c
18、last:返回列表/字符串中的最后一個(gè)元素删壮。使用形式:{{ value | last }}
19贪绘、length:返回value的長(zhǎng)度。使用形式:{{ value | length }}
20央碟、length_is:如果value的長(zhǎng)度等于arg的時(shí)候返回True税灌。使用形式:{{ value | length_is:"arg"}}。例如:如果value是['a','b','c']亿虽,arg是3菱涤,那么返回True
21、linebreaks:value中的"\n"將被<br/>替代洛勉,并且整個(gè)value使用</p>包圍起來粘秆。使用形式:{{value|linebreaks}}
22、linebreaksbr:value中的"\n"將被<br/>替代收毫。使用形式:{{value |linebreaksbr}}
23攻走、linenumbers:顯示的文本,帶有行數(shù)此再。使用形式:{{value | linenumbers}}
24昔搂、ljust:在一個(gè)給定寬度的字段中,左對(duì)齊顯示value引润。使用形式:{{value | ljust}}
25、center:在一個(gè)給定寬度的字段中痒玩,中心對(duì)齊顯示value淳附。使用形式:{{value | center}}
26、rjust::在一個(gè)給定寬度的字段中蠢古,右對(duì)齊顯示value奴曙。使用形式:{{value | rjust}}
27、lower:將一個(gè)字符串轉(zhuǎn)換成小寫形式草讶。使用形式:{{value | lower}}
30洽糟、random:從給定的list中返回一個(gè)任意的Item。使用形式:{{value | random}}
31、removetags:刪除value中tag1,tag2....的標(biāo)簽坤溃。使用形式:{{value | removetags:"tag1 tag2 tag3..."}}
32拍霜、safe:當(dāng)系統(tǒng)設(shè)置autoescaping打開的時(shí)候,該過濾器使得輸出不進(jìn)行escape轉(zhuǎn)換薪介。使用形式:{{value | safe}}
33祠饺、safeseq:與safe基本相同,但有一點(diǎn)不同的就是:safe是針對(duì)字符串汁政,而safeseq是針對(duì)多個(gè)字符串組成的sequence
34道偷、slice:與python語法中的slice相同。使用形式:{{some_list | slice:"2"}}
37记劈、striptags:刪除value中的所有HTML標(biāo)簽.使用形式:{{value | striptags}}
38勺鸦、time:格式化時(shí)間輸出。使用形式:{{value | time:"H:i"}}或者{{value | time}}
39目木、title:轉(zhuǎn)換一個(gè)字符串成為title格式换途。
40、truncatewords:將value切成truncatewords指定的單詞數(shù)目嘶窄。使用形式:{{value | truncatewords:2}}怀跛。例如,如果value是Joel is a slug 那么輸出將是:Joel is ...
42柄冲、upper:轉(zhuǎn)換一個(gè)字符串為大寫形式
43吻谋、urlencode:將一個(gè)字符串進(jìn)行URLEncode
46、wordcount:返回字符串中單詞的數(shù)目

8. 運(yùn)算

8.1 乘
    {% widthratio 數(shù) 分母 分子 %}

如下例子: 求數(shù)學(xué)成績(jī)的10倍的結(jié)果 {% widthratio 10 1 stu.stu_shuxue %}

8.2 整除

{{ num|divisibleby:2 }} 注意:該語句的意思是现横,判斷num值是否能被2整除漓拾,如果能的話返回True,不能的話返回False

8.3 ifeuqal判斷相等

{% ifequal value1 value2 %}

{% endifqueal %}

image.png
我的index頁面中

{% extends 'base_main.html' %}

 {% block title %}
    index
{% endblock %}

{% block js %}
    <!-- 注解1 -->
     {# 單行注解: 注解2 {%  %}#}

      {% comment %}
        多行注解:
        122
        3232
        434
        54
      {% endcomment %}
   {{ block.super }}
    {# 在flask中同時(shí)出現(xiàn)js是{{ super() }} #}
{% endblock %}

{% block css %}
  <!--第一種引入靜態(tài)文件的方式-->
  <!--<link rel="stylesheet" href="/static/css/style.css">-->

  <!--第二種: static-->
   {% load static %}
   <link rel="stylesheet" href="{% static 'css/style.css' %}">
{% endblock %}


{% block content %}
   <p>hello django</p>

   {{ content_h2 | safe }}

   <table>
       <thead>
           <th>編號(hào)</th>
           <th>姓名</th>
           <th>手機(jī)號(hào)</th>
           <th>班級(jí)名</th>
           <th>課程名</th>
           <th>第一個(gè)課程</th>
           <th>創(chuàng)建時(shí)間</th>
       </thead>
       <tbody>
            {% for stu in students %}
           <tr>
               <td>{{ forloop.counter0 }}</td>
               <td {% ifequal forloop.counter 1 %} style="color:yellow" {% endifequal %}>
                   {{ stu.s_name }}</td>
               <td>{{ stu.stuinfo.phone }}</td>
               <td>{{ stu.grade.g_name }}</td>
               <td>
                   {% for cou in stu.course.all %}
                   {{ cou.c_name }}
                   {% endfor %}
               </td>
               <td>
                   {{ stu.course.all.0.c_name }}
               </td>
               <td>
                   {{ stu.create_time | date:'Y年m月d日 H:i:s' }}
               </td>
           </tr>
           {% endfor %}
       </tbody>
   </table>


{% endblock %}
  1. 反向解析
    Url 反向解析 {% url ‘namespace:name’ p1 p2 %}


    image.png
  2. 跨站請(qǐng)求CSRF(Cross Site Request Forgery)
    csrf攻擊說明

1.用戶C打開瀏覽器戒祠,訪問受信任網(wǎng)站A骇两,輸入用戶名和密碼請(qǐng)求登錄網(wǎng)站A;

2.在用戶信息通過驗(yàn)證后,網(wǎng)站A產(chǎn)生Cookie信息并返回給瀏覽器姜盈,此時(shí)用戶登錄網(wǎng)站A成功低千,可以正常發(fā)送請(qǐng)求到網(wǎng)站A;

3.用戶未退出網(wǎng)站A之前,在同一瀏覽器中馏颂,打開一個(gè)TAB頁訪問網(wǎng)站B;

4.網(wǎng)站B接收到用戶請(qǐng)求后示血,返回一些攻擊性代碼,并發(fā)出一個(gè)請(qǐng)求要求訪問第三方站點(diǎn)A;

5.瀏覽器在接收到這些攻擊性代碼后救拉,根據(jù)網(wǎng)站B的請(qǐng)求难审,在用戶不知情的情況下攜帶Cookie信息,向網(wǎng)站A發(fā)出請(qǐng)求亿絮。網(wǎng)站A并不知道該請(qǐng)求其實(shí)是由B發(fā)起的告喊,所以會(huì)根據(jù)用戶C的Cookie信息以C的權(quán)限處理該請(qǐng)求麸拄,導(dǎo)致來自網(wǎng)站B的惡意代碼被執(zhí)行。
csrf的攻擊之所以會(huì)成功是因?yàn)榉?wù)器端身份驗(yàn)證機(jī)制可以通過Cookie保證一個(gè)請(qǐng)求是來自于某個(gè)用戶的瀏覽器黔姜,但無法保證該請(qǐng)求是用戶允許的拢切。因此,預(yù)防csrf攻擊簡(jiǎn)單可行的方法就是在客戶端網(wǎng)頁上添加隨機(jī)數(shù)地淀,在服務(wù)器端進(jìn)行隨機(jī)數(shù)驗(yàn)證失球,以確保該請(qǐng)求是用戶允許的。Django也是通過這個(gè)方法來防御csrf攻擊的帮毁。


image.png

Django中防止跨站請(qǐng)求偽造使用CSRF, 即:客戶端訪問服務(wù)器端实苞,在服務(wù)器端正常返回給客戶端數(shù)據(jù)的時(shí)候,而外返回給客戶端一段字符串烈疚,等到客戶端下次訪問服務(wù)器 端時(shí)黔牵,服務(wù)器端會(huì)到客戶端查找先前返回的字符串,如果找到則繼續(xù)爷肝,找不到就拒絕猾浦。

Django中配置:

在表單中添加 {% csrf_token %}(不添加會(huì)出現(xiàn)403錯(cuò)誤)
在settings中的中間件MIDDLEWARE中配置打開 ‘django.middleware.csrf.CsrfViewMiddleware’

在settings.py文件中
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 這東西不能關(guān),防止別人登你的網(wǎng)站,所以在form中加{% csrf_token %},
#也可以在views中用@csrf_protect(保護(hù)), 但直接打開下面這個(gè)方便
    'django.middleware.csrf.CsrfViewMiddleware',
]
image.png

11.模板要想同時(shí)出現(xiàn)多個(gè)js文件,就用:

{% block js %}
{{ block.super }}
    {# 在flask中同時(shí)出現(xiàn)js是{{ super() }} #}

{% endblock %}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末灯抛,一起剝皮案震驚了整個(gè)濱河市金赦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌对嚼,老刑警劉巖夹抗,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異纵竖,居然都是意外死亡漠烧,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門靡砌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來已脓,“玉大人,你說我怎么就攤上這事通殃《纫海” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵画舌,是天一觀的道長(zhǎng)堕担。 經(jīng)常有香客問我,道長(zhǎng)骗炉,這世上最難降的妖魔是什么照宝? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任蛇受,我火速辦了婚禮句葵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己乍丈,他們只是感情好剂碴,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著轻专,像睡著了一般忆矛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上请垛,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天催训,我揣著相機(jī)與錄音,去河邊找鬼宗收。 笑死漫拭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的混稽。 我是一名探鬼主播采驻,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼匈勋!你這毒婦竟也來了礼旅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤洽洁,失蹤者是張志新(化名)和其女友劉穎痘系,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诡挂,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡碎浇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了璃俗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奴璃。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖城豁,靈堂內(nèi)的尸體忽然破棺而出苟穆,到底是詐尸還是另有隱情,我是刑警寧澤唱星,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布雳旅,位于F島的核電站,受9級(jí)特大地震影響间聊,放射性物質(zhì)發(fā)生泄漏攒盈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一哎榴、第九天 我趴在偏房一處隱蔽的房頂上張望型豁。 院中可真熱鬧僵蛛,春花似錦、人聲如沸迎变。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽衣形。三九已至驼侠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谆吴,已是汗流浹背倒源。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留句狼,地道東北人相速。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像鲜锚,于是被迫代替她去往敵國(guó)和親突诬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 模塊間聯(lián)系越多芜繁,其耦合性越強(qiáng)旺隙,同時(shí)表明其獨(dú)立性越差( 降低耦合性,可以提高其獨(dú)立性)骏令。軟件設(shè)計(jì)中通常用耦合度和內(nèi)聚...
    riverstation閱讀 2,064評(píng)論 0 8
  • 在上一個(gè)章節(jié)蔬捷,我們已經(jīng)創(chuàng)建了一個(gè)基礎(chǔ)的Blog程序。現(xiàn)在我們將使用一些Dajngo高級(jí)功能榔袋,去實(shí)現(xiàn)一個(gè)完整的blo...
    金金剛狼閱讀 3,578評(píng)論 1 12
  • 一周拐、Django框架前言知識(shí): 1、C/S和B/S的區(qū)別: C/S結(jié)構(gòu)軟件:客戶端/服務(wù)端軟件凰兑,即客戶端要自己下載...
    月下獨(dú)酌123閱讀 4,513評(píng)論 0 36
  • 1. DJANGO使用指南 Django簡(jiǎn)介: Django官網(wǎng)地址[https://www.djangoproj...
    文化銀兒閱讀 719評(píng)論 0 1
  • Getting Started Burp Suite 是用于攻擊web 應(yīng)用程序的集成平臺(tái)妥粟。它包含了許多工具,并為...
    Eva_chenx閱讀 28,658評(píng)論 0 14