Django
創(chuàng)建一個(gè)Django項(xiàng)目沉桌,url的理解
#進(jìn)入到指定要存放項(xiàng)目的目錄,創(chuàng)建 HelloWorld 項(xiàng)目
django-admin startproject HelloWorld
#進(jìn)入HelloWorld 創(chuàng)建 hello 應(yīng)用
python manage.py startapp hello
#先實(shí)現(xiàn)一個(gè)最基本的視圖與url配置
#hello/views.py
from django.http import HTTPResponse
#----第一步----
def index(request):
return HttpResponse('你好騷啊')
#HeloWorld/urls.py
from hello.views import index # 導(dǎo)入視圖函數(shù)
#----第二步----
urlpatterns = [
url(r'^index/',index)#先去匹配index(可以隨意設(shè)置)前綴篮昧,訪問(wèn)到views里的index函數(shù)
]
#訪問(wèn)http:127.0.0.1:8000/index/ 會(huì)顯示字符串
#雙層路由的實(shí)現(xiàn)過(guò)程
#1.在hello/下新建urls.py
from django.conf.urls import url
from hello.views import index
#----第一步----
urlpatterns = [url(r'^index/',index)]
#2.更改HelloWorld/urls.py
from django.conf.urls import url, include
#----第二步----需要匹配到另外的路由時(shí)要用include----
urlpatterns = [url(r'^hello/',include('hello.urls'))]
#3.在HeloWorld/settings.py下添加
INSTALLED_APPS =['hello']
#訪問(wèn)http:127.0.0.1:8000/hello/index/ 會(huì)顯示字符串
練習(xí):新建一個(gè)應(yīng)用showtime,每次刷新頁(yè)面顯示不同的時(shí)間陡叠。
#1.python manage.py startapp showtime
#寫(xiě)showtime/views.py
from django.http import HttpResponse
from datetime import datetime
#----第一步----
def now(request):
return HttpResponse('現(xiàn)在的時(shí)間是:%s'% datetime.now())
#在showtime下面新建一個(gè)urls.py
from django.conf.urls import url
from showtime.views import now#在這里
#----第二步----
urlpatterns = [url(r'^time/',now)]
#----第三步----
#在HeloWorld/settings.py下添加
INSTALLED_APPS =['showtime']
#在HeloWorld/urls.py中添加
url(r'^showtime/',include('showtime.urls'))
#訪問(wèn)127.0.0.1:8000/showtime/time/ 顯示時(shí)間
基本模板
練習(xí):在上一個(gè)練習(xí)中伸但,使用template顯示頁(yè)面內(nèi)容。
在上面基礎(chǔ)上更改
1.在showtime文件夾中新建一個(gè)文件夾templates
2.再在里面新建一個(gè)showtime文件夾(用來(lái)區(qū)分枚尼,以免重名出現(xiàn)沖突)
3.在里面新建一個(gè)html文件now.html
#----第一步----
#更改showtime/views.py
from django.shortcuts import render
def now(request):
return render(request,'showtime/now.html',{'now':datetime.now()})#render參數(shù)(request贴浙,'模板的名稱',時(shí)間參數(shù)#是一個(gè)字典)
#----第二步----
#now.html
現(xiàn)在的時(shí)間是:{{now}}#{{}}可以取到變量的值。now是views.py里面的鍵
基本模型
#hello/models.py
from django.db import models
#----第一步----創(chuàng)建模型----
#類會(huì)對(duì)應(yīng)數(shù)據(jù)庫(kù)中的表
#類的對(duì)象會(huì)對(duì)應(yīng)數(shù)據(jù)庫(kù)中的一條數(shù)據(jù)
#類的屬性(如name)對(duì)應(yīng)數(shù)據(jù)庫(kù)中的字段
class Grade(models.Model):
#注意:
#一般類以大寫(xiě)字母開(kāi)頭署恍,模型類均繼承自 models.Model
name = models.CharField(max_length=20)
#字符串崎溃, 需要加最大長(zhǎng)度
date = models.DateField()
#日期
girlNum = models.IntegerField()
#整數(shù)
boyNum = models.PositiveIntegerField()
#正整數(shù)
is_delete = models.BooleanField()
#布爾
默認(rèn)會(huì)生成一個(gè)id主鍵 屬性是(整數(shù) 自增長(zhǎng))
寫(xiě)完之后要做數(shù)據(jù)遷移,就會(huì)把類映射到數(shù)據(jù)庫(kù)中
#----第二步----上傳到數(shù)據(jù)庫(kù)----
python manage.py makemigrations#會(huì)生成中間文件
python manage.py migrate#執(zhí)行遷移盯质,把上面生成的文件寫(xiě)入數(shù)據(jù)庫(kù)
刷新數(shù)據(jù)庫(kù)會(huì)看到有一個(gè)hello_grade表 hello是app的名字袁串,表示在hello下面創(chuàng)建的grade表
#----第三步----把數(shù)據(jù)顯示到模板----
#hello/views.py
from django.shortcuts import render
from .models import Grade
def index(request):
#取到所有數(shù)據(jù)
grades = Grade.objects.all()
#數(shù)據(jù)庫(kù)操作參考:http://www.runoob.com/django/django-model.html
#通過(guò)render把所有班級(jí)渲染到模板上
return render(request, 'hello/list.html' ,{'grades':grades})#通過(guò)字典傳參概而,模板可通過(guò)key值取得數(shù)據(jù),key名可以改
#list.html
<h3>班級(jí)列表<h3>
<ul>
{%for grade in grades%} #循環(huán)取出數(shù)據(jù)囱修,后面的grades對(duì)應(yīng)上面的key赎瑰,上面key改了這里也要改。
<li>
班級(jí)名稱:{{ grade.name }} <br>
#這里的grade就是上面循環(huán)出來(lái)的grade
成立日期:{{ grade.date }} <br>
女生數(shù)量:{{ grade.girlNum }} <br>
男生數(shù)量:{{ grade.boyNum }} <br>
</li>
{%endfor%}
</ul>
#----第四步----
#建好模型后要在同一個(gè)APP下面注冊(cè)一下
#hello/admin.py
from django.contrib import admin
from hello.models import Grade
admin.site.register(Grade)
from django.http import HttpResponse
#數(shù)據(jù)庫(kù)操作
from wtf.models import ZQURedio
def testdb(request):
test1 = ZQURedio(name='runoob',date='2018-09-06',girlNum='1', boyNum='3',is_delete='False')
test1.save()
return HttpResponse("<p>數(shù)據(jù)添加成功蔚袍!</p>")
服務(wù)器的啟動(dòng)
python manage.py runserver [ip:port]
admin后臺(tái)管理:
創(chuàng)建超級(jí)用戶:python manage.py createsuperuser
訪問(wèn)admin后臺(tái):http://127.0.0.1:8000/admin/