日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python框架django文档_Django基础——Django框架介绍及模板语言

發布時間:2023/12/4 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python框架django文档_Django基础——Django框架介绍及模板语言 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Django框架,我們只需要關心二點:

1.根據用戶訪問不同的路徑執行不同的函數

2.從HTML讀取出內容,并且完成字符串的替換

而socket通信不需要我們自己寫;

新建Django項目

命令行創建:

django-admin startproject mysite

pycharm創建:

1. File --> New project --> 左側選Django --> 右側填第二個項目路徑,并且勾選python.exe

設置Django項目:

1. settings.py

1. 配置HTML文件存放的位置(Templates)

2. 配置靜態文件(CSS/JS/圖片)存放的位置

3. 注釋掉setting.py中 帶有 csrf 的那一行。

Django項目的啟動:

1. 命令行啟動

在項目的根目錄下(也就是有manage.py的那個目錄),運行:

python3 manage.py runserver IP:端口--> 在指定的IP和端口啟動

python3 manage.py runserver 端口 --> 在指定的端口啟動

python3 manage.py runserver --> 默認在本機的8000端口啟動

2.PyCharm啟動

點綠色的小三角,直接可以啟動Django項目(前提是小三角左邊是你的Django項目名)

MVC是軟件工程中的一種軟件架構模式,把軟件系統分為三個基本部分:模型(Model)、視圖(View)和控制器(Controller),具有耦合性低、重用性高、生命周期成本低等優點;

MVC中的控制器可以看做是Django中的urls.py和views.py(不同路徑對應的不同的函數,并且執行函數);視圖可以看做是templates(存放html文件的);模型相當于models.py(在數據庫中生產表的)

而Django框架的設計模式借鑒了MVC框架的思想,也是分成三部分,來降低各個部分之間的耦合性。Django框架的不同之處在于它拆分的三部分為:Model(模型)、Template(模板)和View(視圖),也就是MTV框架。

如下圖:

Django中的APP:

什么是APP?以及為什么要用APP?

project --> 項目 (學校)

APP --> 應用 (Linux學院/Python學院/大數據學院/Java學院)

用APP就是為了方便 我們在一個大的Django項目中,管理實現不同的業務功能.

創建app

python3 manage.py startapp my_app

Django生命周期的流程圖:

Django模板系統(詳細點我)

模板系統本質上就是(在html文件中進行字符串替換);

語法:

{{ 變量 }} ;{% %}則是邏輯相關用的;

1. 變量相關: {{ name }},{{name|length}},{{name|default:"默認值"}}

在Django的模板語言中,通過使用?過濾器?來改變變量的顯示。

過濾器的語法: {{ value|filter_name:參數 }}

使用管道符"|"來表示過濾器(filters)。

下面是內置的過濾器:

1.default :

如果一個變量是false或者為空,使用給定的默認值。 否則,使用變量的值。

2.length:

返回值的長度,作用于字符串和列表。

3.filesizeformat:

將值格式化為一個 “人類可讀的” 文件尺寸 (例如?'13 KB',?'4.1 MB',?'102 bytes', 等等)

4.slice

切片

date

日期格式化

{#{{ JS_html|safe }}#}

{{ JS_html }}

{{ name }}

{{ now|date:"Y-m-d H:i:s" }}

{{ text }}

{{ text|truncatechars:18 }}

文件大小:{{ size|filesizeformat }}

5. safe --> XSS攻擊(跨站腳本攻擊)

Django的模板中會對HTML標簽和JS等語法標簽進行自動轉義,原因顯而易見,這樣是為了安全。但是有的時候我們可能不希望這些HTML元素被轉義,用戶輸入的信息如果是js的話,進行自動的轉義后網站有可能會受到攻擊。因此把js的語法標簽 轉為字符串了;如果告訴Django這個代碼是安全的,就會自動轉義為相應內容;但是不告訴,則會轉變為字符串;

value = "點我"

{{ value|safe}}

6. truncatechars:20 --> 截取字符,超過的用...表示

如果字符串字符多于指定的字符數量,那么會被截斷。截斷的字符串將以可翻譯的省略號序列(“...”)結尾。

參數:截斷的字符數

{{ value|truncatechars:9}}

自定義的filter

1. 定義階段

1. 在app下面新建一個python的包:templatetags

2. 在上面的Python包中新建一個Python文件,名字隨意

3. 在上述python文件中:

from django import template

# 生成一個注冊用的實例

register = template.Library()

# 定義并注冊一個自定義的filter函數

@register.filter(name='addsb')

def add_sb(arg):

return "{} sb".format(arg)

from django import template

register = template.Library()

# 自定義filter函數方法

# 告訴Django的模板語言我現在有一個自定義的filter方法名

@register.filter(name="addstr")

def add_str(arg,arg2): #自定義的filter 函數的 方法 只能有 兩個參數;

"""

:param arg: 第一個參數永遠是管道符(|)前面的變量

:param agr2: 方法:變量;冒號后面的變量

:return:

"""

return "{},{}".format(arg,arg2)

自定的filter函數只能傳入一個變量(就是冒號后面的變量) ;

而simple_tage 可以傳入多個值;inclusion_tag可以返回一段html的代碼(比如返回url標簽)

如下:

#simple_tag 指定的方法可以傳入多個值

@register.simple_tag(name="add_sum")

def add_sum(arg,arg1,arg2,arg3):

return "{}+{}+{}+{}".format(arg,arg1,arg2,arg3)

# inclusion_tag 自動的幫 你把函數的返回值 替換到你指定的html里面,

# 然后把結果最后的返回給調用函數的地方;

@register.inclusion_tag("incolusion_demo.html")

def show_results(n):

n=1 if n<1 else int(n)

data = ["第{}次".format(i) for i in range(1,n+1)]

return {"data":data}

2. 調用階段:

1. 在Django的模板文件中,導入剛才新建的python文件

{% load py文件名 %}

2. 按照filter的語法調用

{{ name|addsb }}

{#在調用自己寫的方法的時候需要用load調用app里面的templatetags里面的文件#}

{% load myfilter %}

{{ name|addstr:"張映雪" }}

{% load my_simple_tag %}

{% add_sum "張映雪" "張映雪" "張映雪" "張映雪" %}

{% show_results 5 %}

2. 邏輯相關:

1. if判斷

{% if a > b %}

{% endif %}

{% if a > b %}

{% else %}

{% endif %}

{% if a > b %}

{% elif %}

{% else %}

{% endif %}

2. for循環

1. for循環的基本用法:

{% for i in name_list %}

{{ i }}

{% endfor %}

{% for i in name_list %}

{{ i }}

{% empty %} #如果沒有數據 則會執行empty后面的語句

空空如也

{% endfor %}

2. for循環可用的屬性:

forloop.counter (從1開始計數)

forloop.counter0(從0開始計數)

forloop.revcounter(從1反向計數)

forloop.revcounter0(從0反向計數)

forloop.first? ? ?  當前循環是不是第一次循環

forloop.last      當前循環是不是最后一次循環

這兩個返回pool值

forloop.parentloop --> 兩層for循環,內層循環引用外層循環

模板中支持的寫法:

{# 取l中的第一個參數 #}

{{ l.0 }}

{# 取字典中key的值 #}

{{ d.name }}

{# 取對象的name屬性 #}

{{ person_list.0.name }}

{# .操作只能調用不帶參數的方法,并且方法后面不需要() #}

{{ person_list.0.dream }}

1. 母版和繼承

1. 為什么要有模板和繼承:

把多個頁面公用的部分提取出來,放在一個 母版 里面。

其他的頁面只需要 繼承 母版就可以了。這樣方便;

2. 具體使用的步驟:

1. 把公用的HTML部分提取出來,放到base.html文件中

2. 在base.html中,通過定義block,把每個頁面不同的部分區分出來

3. 在具體的頁面中,先繼承母版{% extends "base.html(母版的html)" %}

4. 然后block名去指定替換母版中相應的位置

母版(框架):

{# 下面是用來替換的 #}

{% block page_content %}

{% endblock %}

繼承母版的新的html

{#繼承母版#}

{% extends "base.html" %}

{#把自己的頁面內容 放入到母版里面的blck的位置里面#}

{% block page_content %}

{# 里面就是所替換的內容#}

{% endblock %}

{% block book_active %}

active

{% endblock %}

3. 使用母版和繼承的注意事項:

1. {% extends 'base.html' %} --> 母版文件:base.html要加引號

2. {% extends 'base.html' %}必須放在子頁面的第一行!!!

3. 可以在base.html中定義很多block,通常我們會額外定義page-css和page-js兩個塊

{% block page_css %}

{% endblock %}

{% block page_js %}

{% endblock %}

4. view.py相應的函數中返回的是對應的子頁面文件 不是 base.html

組件:

可以將常用的頁面內容如導航條,頁尾信息等組件保存在單獨的文件中,然后在需要使用的地方按如下語法導入即可。

{% include 'navbar.html' %}

靜態文件相關的

{% load static %}

某個文件多處被用到可以存為一個變量

{% load static %}

{% static "images/hi.jpg" as myphoto %}

{% load static %}

總結

以上是生活随笔為你收集整理的python框架django文档_Django基础——Django框架介绍及模板语言的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。