天天看點

Django初學者指南

大體流程: 

Urls.py 産生url映射到 Views.py , 然後 View.py 從models.py 處獲得資料,利用獲得的資料填充templates中的html檔案,産生完整的response傳回給用戶端

MTV模式:

Model:模型,Django内置ORM與資料庫API的連接配接,使得操作資料庫類似于操作Python的類

Template:模版,靜态檔案,其中可以嵌套Django的内置語言以填充資料,也可以實作一些便利的操作如循環周遊、條件判斷

View:視圖,通過url的映射,根據不同的Request給出不同的Response

其實就類似于MVC模式

具體細節:

1.每一個app都需要在項目的setting.py中注冊,templates有預設路徑,不過每一個不同的app可以有不同的templates檔案夾,但是要标明具體路徑

2.一旦models.py發生變化,需要在終端處python3 manage.py makemigration -> python3 manage.py migrate

3.models.py中的類需要在admin.py中注冊 -> admin.site.register(classname)

4.render(request, templateFile,dictionary)

5.儲存資料:

classname.objects.create(**formdata.cleaned_data)

模版

重寫ListView中的get_query函數以使用as_view()

def get_query(self):

    Users = Classname.objects.values(“username”,”password”).distinct()

    Return Users

{% load staticfiles %}導入靜态資源資訊

{% static “css/hw_index.css” %}讀取靜态資源檔案内容

{% for type in type_list %} {% endfor %}

{% if name.type in type.type %} {% endif %}

{{ type.type }}

常用内置标簽

For 

If

csrf_token

Url

With

Load

Static

Extends

Block

Classname.objects.filter(username=“star”).update(username=“starmoon”)

Classname.objects.all().delete()

Classname.objects.get(name=“star”).delete()

Classname.objects.filter(name=‘star’).delete()

Filter模糊查詢:比對符(p84)

表單

Class ProductForm(forms.form)

    name = forms.CharField(max_length=20,label=“name”)

Def index(request):

    product = ProductForm()

    return render(request,”data_form.html”,locals())

{{ product.as_table }}

{{ product.as_ul }}

{{ product.as_p }}

内置的表單字段與共同參數p94

Class ProductMdelForm(forms.ModelForm):

    prodectID = forms.CharField(max_length=20,label=“ID”)

    class Meta:

        model = Product

        fields = [“name”,”weight”,”size”]

        exclude = []

        labels = {“name”:”Product Name”,”weight”:”Product weight”}

        widgets = {name:forms.widgets.TextInput(attrs={“class”:”c1”})}