django項(xiàng)目初步設(shè)置與部署
利用django-admin startproject website進(jìn)行網(wǎng)站項(xiàng)目創(chuàng)建。
進(jìn)入website文件夾,在這里打開命令行。在命令行上輸入manage.py startapp blog,這條命令說明我們需要建設(shè)一個(gè)真正的網(wǎng)站,該網(wǎng)站的名字為blog苟弛。
到此為止其實(shí)一個(gè)網(wǎng)站的基礎(chǔ)已經(jīng)搭建起來(lái)。我們可以看到里面的文件分別為:init.py阁将、settings.py膏秫、urls.py、wsgi.py做盅。
下面我們會(huì)對(duì)其一步步的深入:
1.對(duì)setting文件進(jìn)行修改
-
修改地區(qū)語(yǔ)種
地區(qū) 語(yǔ)種修改 增加blog網(wǎng)站
2.我們進(jìn)入urls.py進(jìn)行修改:
我們?cè)俅卧黾右粭l代碼缤削。
url(r'^blog/index/$','blog.views.index'),
(這是一個(gè)正則表達(dá)式,是為了我們?cè)跒g覽器中輸入地址進(jìn)行匹配的吹榴。具體的正則表達(dá)式抽時(shí)間再進(jìn)行整理)
3.已經(jīng)定義好了urls.py后亭敢,我們從剛的式子可以看出我們用一個(gè)正則表達(dá)式匹配了瀏覽器輸入的地址,后接受這個(gè)請(qǐng)求需要返回'blog.views.index'這個(gè)視圖函數(shù)图筹。所以我們?cè)趘iews.py中進(jìn)行定義一個(gè)index帅刀。
修改過過程為:
# Create your views here.
from django.http import HttpResponse
from django.template import loader,Context
#creat the function index:
def index(request):
t = loader.get_template("index.html")//接受請(qǐng)求后返回index.html
c = Context({})//在這里進(jìn)行設(shè)置器html頁(yè)面規(guī)定的模板變量
return HttpResponse(t.render(c))//通過渲染后進(jìn)行返回
4.創(chuàng)建了模板模式,blog/templates/index.html
我們?cè)赽log文件下創(chuàng)建templates文件夾,這個(gè)文件夾保存需要返回的模板網(wǎng)頁(yè)远剩。我們創(chuàng)建相應(yīng)的index.html扣溺。
我們輸入一句測(cè)試語(yǔ)句:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h1>hello {{name}}!</h1>
</body>
</html>
在這里我們可以看到{{name}},在兩個(gè)花括號(hào)里的就是一個(gè)模板變量民宿,下面我們會(huì)詳細(xì)講解
在views.py我們進(jìn)行模板變量的賦值:
def index(request):
t = loader.get_template("index.html")
name ='world'
c = Context({"name":name})
return HttpResponse(t.render(c))
5.最后一步我們?cè)诿钚兄休斎?manage.py runserver娇妓,這行命令啟動(dòng)django內(nèi)置的服務(wù)器像鸡,我們輸入相應(yīng)的網(wǎng)址可以進(jìn)行對(duì)我們建設(shè)的網(wǎng)站進(jìn)行訪問活鹰。訪問結(jié)果如下:
模板變量的問題
在創(chuàng)建類當(dāng)中的構(gòu)造函數(shù)當(dāng)中我們必須記住__ init
是兩條下劃線。
模板變量的使用
++首先在html的頁(yè)面中去規(guī)定模板變量{{}}在內(nèi)寫上變量的名稱.設(shè)定的名稱在django文件中進(jìn)行再次的設(shè)置只估。++
相應(yīng)的其實(shí)在構(gòu)造器中使用也是一個(gè)字典志群。使用字典進(jìn)行映射。
在模板中也可以進(jìn)行判斷使用{% %}進(jìn)行判斷蛔钙。同時(shí)必須要有開始和結(jié)尾锌云。
這是兩個(gè)模板標(biāo)簽
開始是{% if %}
結(jié)束時(shí){% endif %}
開始是{% for %}
結(jié)束時(shí){% endfor %}
注意倆個(gè)%要頂?shù)筋^同時(shí)不要混淆{}和<>
{% empty %}代表其為空在for循環(huán)中嵌套使用。
forloop.counter :輸出的最后一次
forloop.revcounter:還剩下幾次
forloop.first: 第一次循環(huán)
forloop.lasy: 最后一次循環(huán)
django的過濾器
過濾器與管道的區(qū)別
其實(shí)將其與linux下的管道相比而言吁脱,兩者十分相似桑涎。前者的輸出變?yōu)楹笳叩妮斎?/p>
capfirst為變大第一個(gè)字母
today|date:"Y-m-d"這這是一個(gè)管道的輸出
如何自定義過濾器
- 現(xiàn)在文件家里建立templatags的文件夾
- 在建立起init.py
- 在建立相應(yīng)的過濾器來(lái)進(jìn)行
from django import template
register = template.Library()//引入過濾器的圖書館
def percent (value):
return value+"%"
register.filter(percent)//注冊(cè)你自己定義的過濾器
輸入值如何得到
id = request.GET.get("id")
第一種船只方式
/?id=11&name=asda
第二種傳值方法
/122/asd
都在url.py進(jìn)行對(duì)url的構(gòu)造彬向。
他是一種使用正則表達(dá)式的一種使用。
第一種是url(r" url(r'^foo/(\d{4})/(\w+)/$','foo'),")//前面對(duì)應(yīng)的是傳入的參數(shù)攻冷。后面呢是傳入的位置
在view.py函數(shù)當(dāng)中可以接受的參數(shù)是前面?zhèn)魅氲膮?shù)
錯(cuò)誤
url(r'^bar/(?P<id>\d{4})/(?P<name>\w+)/$','bar'),
在這里是將其進(jìn)行一個(gè)分組娃胆,id的組長(zhǎng)限制為4個(gè)數(shù)字,name限制為多個(gè)字符等曼。并且對(duì)其進(jìn)行字符長(zhǎng)度的限制和分組的命名里烦。
與數(shù)據(jù)庫(kù)的交互
django的模板
在blog下的model.py文件進(jìn)行修改
輸入設(shè)置需要?jiǎng)?chuàng)建的數(shù)據(jù)庫(kù)文件。
from django.db import models
Create your models here.
class Student(models.Model):
name = models.CharField(max_length = 50)
age = models.IntegerField()
同時(shí)在命令行下進(jìn)行啟動(dòng):




