成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

Python web開(kāi)發(fā)筆記五:Django開(kāi)發(fā)進(jìn)階一

Java_oldboy / 2341人閱讀

摘要:在第一次執(zhí)行循環(huán)時(shí)該變量為是一個(gè)布爾值在最后一次執(zhí)行循環(huán)時(shí)被置為。注冊(cè)自定義修改顯示字段管理后臺(tái)默認(rèn)顯示,在中添加返回值方法,修改顯示效果。

理解上下文
render(request,x.html,context)
request:請(qǐng)求的固定寫(xiě)法。
x.html:模板,需要填補(bǔ)丁的模板。
context:上下文,填充模板的補(bǔ)丁。
模板的使用流程

寫(xiě)模板,創(chuàng)建Template對(duì)象,用模板語(yǔ)言進(jìn)行修改。

創(chuàng)建Context,context是一組字典,用來(lái)傳遞數(shù)據(jù)給Template對(duì)象。

調(diào)用Template對(duì)象的render()方法傳遞context來(lái)填充模板。

創(chuàng)建并使用模板

多帶帶創(chuàng)建templates、staitc文件夾,將之前寫(xiě)的前端文件如何放入Django項(xiàng)目。

網(wǎng)頁(yè)放入tempaltes,所有的靜態(tài)文件放入static中。(靜態(tài)文件是指網(wǎng)站中的 js, css, 圖片,視頻等)

修改setting,TEMPLATES,DIRS:[os.path.join(BASE_DIR,"templates").replace("","/")], (注意逗號(hào)不能夠少)

html最上方加入{% load staticfiles %},在模板中引入靜態(tài)文件,修改模板中的固定地址改為動(dòng)態(tài)地址。({% static "css/semantic.css" %})

模板語(yǔ)言

模板語(yǔ)言分為:模板變量,模板標(biāo)簽,模板過(guò)濾器。

模板變量:

            
{{ value }},{{ Person.name }}

模板標(biāo)簽:

{% for item in list %}
    {{ item }}
{% endfor %}

{% for key, value in dict.items %}
    {{ key }}: {{ value }}
{% endfor %}

{% if today_is_weekend %}
    

Welcome to the weekend!

{% else %}

Get back to work.

{% endif %}

注:標(biāo)簽可以多重進(jìn)行嵌套。

其他:

{% forloop.first %}是一個(gè)布爾值。在第一次執(zhí)行循環(huán)時(shí)該變量為T(mén)rue
{% forloop.last %}是一個(gè)布爾值;在最后一次執(zhí)行循環(huán)時(shí)被置為T(mén)rue。

模板過(guò)濾器:

{{ value|default:"nothing" }} 如果為空則顯示nothing的樣式。
{{ value|truncatewords:200 }} 只顯示前200個(gè)字符。
{{ name|lower }} 功能是轉(zhuǎn)換文本為小寫(xiě)。
案例

使用 django 的"日期字段"給每篇文章添加類(lèi)似圖中的一個(gè)發(fā)布日期,格式是「2016-11-05」

model增加:
class Aritcle(models.Model):
    date = models.DateField(auto_now=True)

html增加:
{{ article.date|date:"Y-m-d" }}
模板繼承 extends標(biāo)簽

定義一個(gè)父模板為base.html,寫(xiě)出HTML的骨架,將需要子塊修改的地方用{% block %}{% endblock %}標(biāo)出。
子模板使用{% extends "base.html" %}將內(nèi)容填寫(xiě)進(jìn)這些空白的內(nèi)容塊。
模板繼承允許你建立一個(gè)基本的”骨架”模板, 它包含你所有最常用的站點(diǎn)元素并定義了一些可以被子模板覆蓋的block。
如果你需要在子模板中引用父模板中的 block 的內(nèi)容,使用 “{{ block.super }}“ 變量.這在你希望在父模板的內(nèi)容之后添加一些內(nèi)容時(shí)會(huì)很有用.(你不必完全覆蓋父模板的內(nèi)容.)

include標(biāo)簽

{% include %}該標(biāo)簽允許在(模板中)包含其它的模板的內(nèi)容。
標(biāo)簽的參數(shù)是所要包含的模板名稱(chēng),可以是一個(gè)變量,也可以是用單/雙引號(hào)硬編碼的字符串。
每當(dāng)在多個(gè)模板中出現(xiàn)相同的代碼時(shí),就應(yīng)該考慮是否要使用 {% include %} 來(lái)減少重復(fù)。

stackoverflow問(wèn)題:{% include %} vs {% extends %} in django templates?

Extending allows you to replace blocks (e.g. "content") from a parent template instead of including parts to build the page (e.g. "header" and "footer"). This allows you to have a single template containing your complete layout and you only "insert" the content of the other template by replacing a block.
If the user profile is used on all pages, you"d probably want to put it in your base template which is extended by others or include it into the base template. If you wanted the user profile only on very few pages, you could also include it in those templates. If the user profile is the same except on a few pages, put it in your base template inside a block which can then be replaced in those templates which want a different profile.

模板注釋

注釋使用{# #}注釋不能跨多行 eg: {# This is a comment #}

urls相關(guān) urls中定義鏈接(三種)
Function views
Add an import:  from my_app import views
Add a URL to urlpatterns:  url(r"^$", views.home, name="home")

Class-based views
Add an import:  from other_app.views import Home
Add a URL to urlpatterns:  url(r"^$", Home.as_view(), name="home")

Including another URLconf
Import the include() function: from django.conf.urls import url, include
Add a URL to urlpatterns:  url(r"^blog/", include("blog.urls"))
url的name屬性

url(r"^add/$", calc_views.add, name="add"),
這里的name可以用于在 templates, models, views ……中得到對(duì)應(yīng)的網(wǎng)址,相當(dāng)于“給網(wǎng)址取了個(gè)名字”,只要這個(gè)名字不變,網(wǎng)址變了也能通過(guò)名字獲取到。

url正則表達(dá)式
url(r"^(?Pd{4})/(?Pd{1,2})/$","get_news_list",name="news_archive" )

在view的參數(shù)獲得 如:def index(request,year,month)

url的include用法
(r"^weblog/", include("mysite.blog.urls")), 
(r"^photos/", include("mysite.photos.urls")),

指向include()的正則表達(dá)式并不包含一個(gè)$(字符串結(jié)尾匹配符)。每當(dāng)Django 遇到include()時(shí),它將截?cái)嗥ヅ涞腢RL,并把【剩余】的字符串發(fā)往被包含的 URLconf 作進(jìn)一步處理。

創(chuàng)建使用后臺(tái)

使用django自帶的后臺(tái),可以可視化管理后臺(tái)的數(shù)據(jù)。

創(chuàng)建超級(jí)管理員
python manage.py createsuperuser # 設(shè)置用戶(hù)名,密碼。
注冊(cè)自定義model
from models import People
admin.site.register(People)
修改顯示字段

管理后臺(tái)默認(rèn)顯示People Obejct,在model中添加返回值方法,修改顯示效果。

  def __str__(self):
      return self.name 
修改后臺(tái)密碼的方法
  python manage.py createsuperuser --username admin
  python manage.py changepassword admin
admin顯示自定義字段
  from django.contrib import admin
  from .models import Article

  class ArticleAdmin(admin.ModelAdmin):
      list_display = ("title","pub_date","update_time",)
    
  admin.site.register(Article,ArticleAdmin)
引入數(shù)據(jù)

Django ORM對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,數(shù)據(jù)庫(kù)操作完成之后,記得要進(jìn)行save()保存。

數(shù)據(jù)庫(kù)操作
Article.objects.all() 獲取表中所有對(duì)象
Aritcle.objects.get(pk=1) # Django中pk=primary key,和id等價(jià)。
Article.objects.filter(pub_date__year=2006) # 使用過(guò)濾器獲取特定對(duì)象
Article.objects.all().filter(pub_date__year=2006) #與上方一致

## 鏈?zhǔn)竭^(guò)濾
>>> Aritcle.objects.filter(
...     headline__startswith="What"
... ).exclude(
...     pub_date__gte=datetime.date.today()
... ).filter(
...     pub_date__gte=datetime(2005, 1, 30)
... )

Article.objects.create(author=me, title="Sample title", text="Test") #創(chuàng)建對(duì)象
Person.objects.get_or_create(name="WZT", age=23) # 防止重復(fù)很好的方法

Article.objects.all()[:5] 記錄前5條 
Person.objects.all().reverse()[:2] # 最后兩條
Person.objects.all().reverse()[0] # 最后一條

>>> Post.objects.filter(title__contains="title") # 包含查詢(xún)
[, ] 
# 注在title與contains之間有兩個(gè)下劃線(xiàn)字符 (_)。
# Django的ORM使用此語(yǔ)法來(lái)分隔字段名稱(chēng) ("title") 和操作或篩選器("contains")。

Post.objects.order_by("-created_date") # 對(duì)象進(jìn)行排序,默認(rèn)升序,添負(fù)號(hào)為降序。
Person.objects.filter(name__iexact="abc") # 不區(qū)分大小寫(xiě)
Person.objects.filter(name__exact="abc") # 嚴(yán)格等于

Person.objects.filter(name__regex="^abc")  # 正則表達(dá)式
Person.objects.filter(name__iregex="^abc") # 不區(qū)分大小寫(xiě)

Person.objects.exclude(name__contains="WZ")  # 排除
Person.objects.filter(name__contains="abc").exclude(age=23
 #找出名稱(chēng)含有abc, 但是排除年齡是23歲的
QuerySet創(chuàng)建對(duì)象的四種方法
Author.objects.create(name="WeizhongTu", email="tuweizhong@163.com

twz = Author(name="WeizhongTu", email="tuweizhong@163.com")
twz.save()

twz = Author()
twz.name="WeizhongTu"
twz.email="tuweizhong@163.com"

Author.objects.get_or_create(name="WeizhongTu", email="tuweizhon“)
# 返回值(object, True/False)
QuerySet是可迭代的
es = Entry.objects.all()
for e in es:
    print(e.headline)
檢查對(duì)象是否存在
Entry.objects.all().exists() 返回布爾值

拓展閱讀:
課堂操作內(nèi)容文檔

備注
該筆記源自網(wǎng)易微專(zhuān)業(yè)《Python web開(kāi)發(fā)》1.2節(jié)
本文由EverFighting創(chuàng)作,采用 知識(shí)共享署名 3.0 中國(guó)大陸許可協(xié)議進(jìn)行許可。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/38533.html

相關(guān)文章

  • Python

    摘要:最近看前端都展開(kāi)了幾場(chǎng)而我大知乎最熱語(yǔ)言還沒(méi)有相關(guān)。有關(guān)書(shū)籍的介紹,大部分截取自是官方介紹。但從開(kāi)始,標(biāo)準(zhǔn)庫(kù)為我們提供了模塊,它提供了和兩個(gè)類(lèi),實(shí)現(xiàn)了對(duì)和的進(jìn)一步抽象,對(duì)編寫(xiě)線(xiàn)程池進(jìn)程池提供了直接的支持。 《流暢的python》閱讀筆記 《流暢的python》是一本適合python進(jìn)階的書(shū), 里面介紹的基本都是高級(jí)的python用法. 對(duì)于初學(xué)python的人來(lái)說(shuō), 基礎(chǔ)大概也就夠用了...

    dailybird 評(píng)論0 收藏0
  • Python測(cè)試開(kāi)發(fā)Django和Flask框架的區(qū)別

    摘要:在談中框架和框架的區(qū)別之前,我們需要先探討如下幾個(gè)問(wèn)題。通過(guò)大數(shù)據(jù)統(tǒng)計(jì)分析全球著名的網(wǎng)站對(duì)和這兩個(gè)框架的調(diào)查分析。從全球著名的代碼托管平臺(tái)上的和數(shù)量上分別為,分別為。 在談Python中Django框架和Flask框架的區(qū)別之前,我們需要先探討如下幾個(gè)問(wèn)題。 一、為什么要使用框架? showImg(https://segmentfault.com/img/remote/14600000...

    B0B0 評(píng)論0 收藏0
  • Python爬蟲(chóng)學(xué)習(xí)路線(xiàn)

    摘要:以下這些項(xiàng)目,你拿來(lái)學(xué)習(xí)學(xué)習(xí)練練手。當(dāng)你每個(gè)步驟都能做到很優(yōu)秀的時(shí)候,你應(yīng)該考慮如何組合這四個(gè)步驟,使你的爬蟲(chóng)達(dá)到效率最高,也就是所謂的爬蟲(chóng)策略問(wèn)題,爬蟲(chóng)策略學(xué)習(xí)不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲(chóng)的設(shè)計(jì)方案,比如說(shuō)。 (一)如何學(xué)習(xí)Python 學(xué)習(xí)Python大致可以分為以下幾個(gè)階段: 1.剛上手的時(shí)候肯定是先過(guò)一遍Python最基本的知識(shí),比如說(shuō):變量、數(shù)據(jù)結(jié)構(gòu)、語(yǔ)法...

    liaoyg8023 評(píng)論0 收藏0
  • Python - 收藏集 - 掘金

    摘要:首發(fā)于我的博客線(xiàn)程池進(jìn)程池網(wǎng)絡(luò)編程之同步異步阻塞非阻塞后端掘金本文為作者原創(chuàng),轉(zhuǎn)載請(qǐng)先與作者聯(lián)系。在了解的數(shù)據(jù)結(jié)構(gòu)時(shí),容器可迭代對(duì)象迭代器使用進(jìn)行并發(fā)編程篇二掘金我們今天繼續(xù)深入學(xué)習(xí)。 Python 算法實(shí)戰(zhàn)系列之棧 - 后端 - 掘金原文出處: 安生??? 棧(stack)又稱(chēng)之為堆棧是一個(gè)特殊的有序表,其插入和刪除操作都在棧頂進(jìn)行操作,并且按照先進(jìn)后出,后進(jìn)先出的規(guī)則進(jìn)行運(yùn)作。 如...

    546669204 評(píng)論0 收藏0
  • 我的第本 gitbook: Flask Web 開(kāi)發(fā)筆記

    摘要:月份發(fā)布了第版,收到不少網(wǎng)友的良好建議,所以又抽空進(jìn)行了完善,當(dāng)然也拖了不少時(shí)間。本書(shū)主要介紹的基本使用,這也是我一開(kāi)始在學(xué)習(xí)過(guò)程中經(jīng)常用到的。第章實(shí)戰(zhàn),介紹了如何開(kāi)發(fā)一個(gè)簡(jiǎn)單的應(yīng)用。聲明本書(shū)由編寫(xiě),采用協(xié)議發(fā)布。 showImg(https://segmentfault.com/img/remote/1460000007484050?w=200&h=152); 書(shū)籍地址 head-f...

    KevinYan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<