python web

20170303120發表於2020-12-30

1.關係(必考)
①#models.py
class banj(models.Model):
mc=models.CharField(max_length=8)
def str(self):
return self.mc
class xues(models.Model):
xm=models.CharField(max_length=8)
bj=models.ForeignKey(banj,on_delete=models.CASCADE,null=True)
def str(self):
return self.xm
②建立班級物件

from faqs.modles import banj
b=banj(mc=”2019級1班”)
b2=banj(mc=”2019級2班”)
b.save()
b2.save()
③建立學生物件

from faqs.models import xues
x=xues(xm=’張三’,bj=b)
x.save()
x2=xues(xm=’李四’,bj=b2)
x2.save()
④通過班級建立學生

x3=b.xues_set.create(xm=”韓梅梅”)
2.用模板實現資料分頁(選)
①模型models.py
from django.db import models
class score(models.Model):
kh=models.CharField(max_length=8) #考號
xm=models.CharField(max_length=8) #姓名
yw=models.IntegerField() #語文成績
sx=models.IntegerField() #數學成績
yy=models.IntegerField() #英語成績
②檢視views.py
from django.score.paginator import Paginator
from django.shortcuts import render
from . import models
def useTempaltePaginator(request):
objects=models.score.objects.all()
pages=Paginator(objects,10)
page_number=request.GET[‘page’]
page=pages.get_page(page_number)
return render(request,‘pagetemplate.html’,{‘scores’:page})
③配置URL訪問檢視
from django.contrib import admin
from django.urls import path
from guyunsu6 import views
urlpatterns = [
path(‘admin/’, admin.site.urls),
path(‘scores’,views.useTempaltePaginator),
]
1)模型表單
①模型models.py
from django.db import models
class person(models.Model):
name=models.CharField(max_length=8)
age=models.SmallIntegerField()
②模型表單views.py
from django.forms import ModelForm,ValidationError
from .models import person
class personForm(ModelForm):
class Meta:
model = person #指定模型
fields =[‘name’, ‘age’] #指定欄位
③檢視中使用模型表單
def usePersonForm(request):
if request.method == ‘POST’: #在提交表單時採用POST方法
mform = personForm(request.POST)#用提交的方法初始化表單
if mform.is_valid():#在表單通過驗證時執行資料處理
ps=person.objects.filter(name=request.POST[‘name’])#用表單資料查詢
if ps.count()==0:
mform.save()#不存在相同姓名時,將資料存入資料庫
msg=‘資料已儲存!’
else:
msg=‘資料庫已存在相同姓名的資料,請勿重複提交!’
else:msg=‘表單資料有錯’
else:
mform = personForm()#建立空白表單
msg=“請輸入資料新增新記錄”
return render(request, ‘temmodelform.html’, {‘mform’: mform,‘msg’:msg})
④自定義模型表單欄位
def validate_age(value):
if int(value) < 20:
raise ValidationError(‘年齡不能小於20!’,code=‘min_value’)
elif int(value) > 50:
raise ValidationError(‘年齡不能大於50!’,code=‘max_value’)
class personFormDIY(ModelForm):
#重定義age欄位
age=forms.CharField(validators=[validate_age],label=‘年齡’,
widget = forms.NumberInput(),
help_text = ‘年齡為[20,50]以內的整數’)
class Meta:
model = person #指定模型
fields = [‘name’, ‘age’] #指定欄位
labels = { ‘name’: ‘姓名’,} #設定欄位渲染後的

相關文章