一、首先配置orm
創(chuàng)新互聯(lián)建站2013年開創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營銷網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元漳平做網(wǎng)站,已為上家服務(wù),為漳平各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:135182197921、首先在settings.py中配置(數(shù)據(jù)庫需要手動(dòng)提前先建好)
注釋以下內(nèi)容(47行)
# 'django.middleware.csrf.CsrfViewMiddleware',
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'orm_db1', 'HOST':'127.0.0.1', 'PORT':3306, 'USER':'root', 'PASSWORD':'mariadb.123', } }
2、在__init__.py中添加以下內(nèi)容:
import pymysql pymysql.install_as_MySQLdb()
二、在項(xiàng)目中配置
1、在models.py中創(chuàng)建用戶表與字段填寫
from django.db import models class User(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=32) password = models.CharField(max_length=32) address = models.CharField(max_length=32) phone=models.CharField(max_length=64,default='120') #______________ 分割線,另做其他使用___________________________ class Publish(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=32) email = models.EmailField() addr = models.CharField(max_length=64) class Author(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=32) address = models.CharField(max_length=32) class Book(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=32) # 21.38 price = models.DecimalField(max_digits=5, decimal_places=2) # 一對多的關(guān)系確立,關(guān)聯(lián)字段寫在多的一方,orm自動(dòng)在publish后面加id,publish_id publish = models.ForeignKey(to='Publish', to_field='id') # 多對多關(guān)系,orm會(huì)自動(dòng)創(chuàng)建第三張表 authors = models.ManyToManyField(to='Author')
1 python3 manage.py makemigrations----記錄一下數(shù)據(jù)庫的變化
2 python3 manage.py migrate----將變化同步到數(shù)據(jù)庫中
2、在總路由添加以后可能要添加的功能路由地址與對應(yīng)的視圖
from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^user_list/',views.user_list), url(r'^delete/',views.delete), url(r'^add/',views.add), url(r'^edit/',views.edit), ]
3、在視圖功能文件中填寫:views.py
from django.shortcuts import render,HttpResponse,redirect from app01 import models # Create your views here. def user_list(request): if request.method=='GET': # 查詢user表中所有數(shù)據(jù).--相當(dāng)于sql select * from app01_user; # 返回結(jié)果是QuerySet對象(先當(dāng)成列表) # [user1,user2] # 單表查詢所有用戶 ret=models.User.objects.all() # print(type(ret)) # for i in ret: # print(type(i)) # print(i.name) return render(request,'user_list.html',{'user_list':ret}) def delete(request): # get請求攜帶參數(shù):http://127.0.0.1:8000/deleteuser/?id=1 if request.method=='GET': # 后臺(tái)取值:request.GET.get('id') id=request.GET.get('id') # orm刪除記錄 models.User.objects.filter(id=id).delete() return redirect('/user_list/') def add(request): if request.method=='GET': return render(request, 'add.html') elif request.method=="POST": # 前臺(tái)post提交的數(shù)據(jù)取值: name=request.POST.get('name') pwd=request.POST.get('password') addr=request.POST.get('addr') phe=request.POST.get('phone_a') # 方式一 # user=models.User(name=name,password=pwd,address=addr) # user.save() #寫入數(shù)據(jù)庫 # 方式二 models.User.objects.create(name=name,password=pwd,address=addr,phone=phe) return redirect('/user_list/') def edit(request): if request.method=='GET': id=request.GET.get('id') # orm查詢單條數(shù)據(jù) user=models.User.objects.filter(id=id).first() return render(request,'edit.html',{'user':user}) if request.method=='POST': id=request.POST.get("id") name = request.POST.get('name') pwd = request.POST.get('password') addr = request.POST.get('addr') phe = request.POST.get('phone_a') # orm的修改 models.User.objects.filter(id=id).update(name=name,password=pwd,address=addr,phone=phe) return redirect('/user_list/')
4、在templates目錄中創(chuàng)建以下html文件
add.html
edit.html
user_list.html
add.html
新增用戶
edit.html
Title
user_list.html
Title
id | name | password | address | phone | delete | add | edit |
---|---|---|---|---|---|---|---|
{{ user.id }} | {{ user.name }} | {{ user.password }} | {{ user.address }} | {{ user.phone }} | 刪除 | 編輯 | 新增用戶 |
總結(jié):
1 orm 創(chuàng)建表,新增字段,修改,刪除字段,不能創(chuàng)建數(shù)據(jù)庫 -字段屬性phone=models.CharField(max_length=64,null=True) -null=True 代表該列可以為空 2 數(shù)據(jù)的增刪改查 -增(1):User.objects.create(address='') -增(2):實(shí)例化產(chǎn)生一個(gè)user對象,user對象的save方法 -刪:User.objects.filter(id=1,name='lqz').first().delete() -刪:User.objects.filter(id=1,name='lqz').delete() -改:User.objects.filter(id=1,name='lqz').update() -查:User.objects.all() user=User.objects.filter(name='lqz') user.name
3 前后臺(tái)交互 -id=1&name='lqz'&
4 django生命周期 5 一對多,多對多 -publish_id -publish=models.ForeignKey(to='Publish', to_field='id') book.publish_id book.publish 多對多:(自動(dòng)創(chuàng)建第三張表) authors = models.ManyToManyField(to='Author')
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。