日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Django框架(二)

發(fā)布時(shí)間:2024/4/13 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django框架(二) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一:Django項(xiàng)目創(chuàng)建步驟:

方式1:命令創(chuàng)建:

進(jìn)入指定目錄

C:\Users\bing>F:

F:\>cd mysite

F:\mysite>django-admin startproject mysite

F:\mysite>python manage.py startapp app01

F:\mysite>python manage.py startapp app02

F:\mysite>python manage.py startapp app03(一個(gè)Django項(xiàng)目可以有多個(gè)app)

admin:Django自帶后臺(tái)管理相關(guān)配置,用于操作數(shù)據(jù)庫(kù)(數(shù)據(jù)庫(kù)的創(chuàng)建,修改,刪除,數(shù)據(jù)表數(shù)據(jù)行的增刪改查),可以不用pymysql和Navicat操作數(shù)據(jù)庫(kù)了

apps.py:表示當(dāng)前app的配置文件

models.py:寫類,Django根據(jù)這個(gè)類來(lái)操作數(shù)據(jù)庫(kù)表(和SQLAlchemy相似,寫類和函數(shù)操作數(shù)據(jù)庫(kù))

test.py:快速做單元測(cè)試

views.py:視圖函數(shù)(業(yè)務(wù)處理)

migrations:創(chuàng)建數(shù)據(jù)庫(kù)表和行時(shí),Django自動(dòng)生成的文件

方式2:圖形界面創(chuàng)建Django項(xiàng)目

?二.

?

啟動(dòng)項(xiàng)目,輸入U(xiǎn)RL地址:http://127.0.0.1:8000/admin/出現(xiàn)一個(gè)登錄界面

?

?1.路由系統(tǒng):

  url ->函數(shù)

  a.一一對(duì)應(yīng)關(guān)系

    /login/->def login()

  b./add_user  

  HTML:有一個(gè)搜索引擎優(yōu)化(SEO),要想排名靠前就不要寫?<li>{{ i }} | <a href="/edit/?nid={{ i }}">編輯</a></li> 這樣的語(yǔ)句,如果是GET傳參,nid的值經(jīng)常變動(dòng),因?yàn)檫@種語(yǔ)句的權(quán)重比較低。

  而要寫這樣的語(yǔ)句

  http://127.0.0.1:8000/edit/?nid=ffffffff/(權(quán)重低)

  http://127.0.0.1:8000/edit/ffffffff/(認(rèn)可,權(quán)重高) ? ?urls.py配置: ? url(r'^edit/(\w+)/', views.edit), ?r代表原生字符,(\w+)代表所有字母和數(shù)字,還有下劃線(a-z、A-Z、0-9、_)?

  urls.py: ??url(r'^edit/(\w+).html/', views.edit) ?url可以寫正則表達(dá)式,(\w+)是動(dòng)態(tài)的,所以這樣的也叫動(dòng)態(tài)路由,如果是這樣:url(r'^edit/(\w+)/(\w+).html/', views.edit),#edit得有兩個(gè)參數(shù)去接收

?

?

?ORM操作表(創(chuàng)建表,增刪改查)

創(chuàng)建表:

class UserGroup(models.Model):"""部門"""title = models.CharField(max_length=32) 創(chuàng)建部門表 class UserInfo(models.Model):"""員工"""nid = models.BigAutoField(primary_key=True)user= models.CharField(max_length=32)password = models.CharField(max_length=64)# age = models.IntegerField(null=True)age = models.IntegerField(default=1)ug = models.ForeignKey("UserGroup",null=True)# ug自動(dòng)生成ug_id列 創(chuàng)建員工表

6.創(chuàng)建數(shù)據(jù)表:
命令:
python manage.py makemigrations 第一條記錄相關(guān)日志
python manage.py migrate 第二條執(zhí)行結(jié)果
英文單詞: migrate:移動(dòng); 遷移,移往; 隨季節(jié)而移居;

nid = models.BigAutoField(primary_key=True) 這一行可以不用設(shè)置
Django里會(huì)自動(dòng)設(shè)置主鍵,主鍵名默認(rèn)為id,而且是自增id,null=True設(shè)置默認(rèn)為空或 default=1默認(rèn)值為1,CharField必須設(shè)置max_length最大長(zhǎng)度,不然程序會(huì)報(bào)錯(cuò)

ug = models.ForeignKey("UserGroup",null=True) 創(chuàng)建員工表的外鍵? ? ??# ug自動(dòng)生成ug_id列

Django1.8以后把settings中的TEMPLATE_DIRS配置項(xiàng)移到了TEMPLATES 下

TEMPLATE_DIRS = (os.path.join(BASE_DIR,'templates'), ) settings.py要隱藏的配置文件 TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR, 'templates')],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},}, ] settings.py文件里的目標(biāo)配置文件TEMPLATES

migrations下面的py文件不要?jiǎng)h,這個(gè)可以查看創(chuàng)建表和增刪改查表等操作的記錄,可以及時(shí)發(fā)現(xiàn)問題

1.python manage.py makemigrations的作用是執(zhí)行一次就讀取models.py文件里的類,然后在migrations目錄下生成配置文件,

2.python manage.py migrate拿著生成的配置文件去生成數(shù)據(jù)庫(kù)的語(yǔ)句

修改表里的列,比如員工表里的user改成username,然后執(zhí)行兩條命令就好了

1.python manage.py makemigrations

2.python manage.py migrate

?

?數(shù)據(jù)表的增刪改查

#1.新增:

def index(request):#增刪改查from app01 import models#新增models.UserGroup.objects.create(title='研發(fā)部')
  
return HttpResponse('bing')

http://127.0.0.1:8000/app01/index.html 瀏覽器訪問,相當(dāng)于執(zhí)行了sql語(yǔ)句

#2.查:

group_list = models.UserGroup.objects.all() 查所有部門表信息 print(group_list) #輸出一個(gè)QuerySet對(duì)象 輸出:<QuerySet [<UserGroup: UserGroup object>, <UserGroup: UserGroup object>, <UserGroup: UserGroup object>, <UserGroup: UserGroup object>]>user_list = models.UserInfo.objects.all()  查所有員工表信息 print(user_list)
輸出:<QuerySet [<UserInfo: UserInfo object>, <UserInfo: UserInfo object>]>

?

# 數(shù)據(jù)庫(kù)相關(guān)操作 def index(request):# 增刪改查from app01 import models# 新增# models.UserGroup.objects.create(title='銷售部') ----insert into # models.UserInfo.objects.create(user='root',password='pwd',age=18,ug_id=1)# 查找# group_list = models.UserGroup.objects.all() # group_list = models.UserGroup.objects.filter(id=1) filter相當(dāng)于where# group_list = models.UserGroup.objects.filter(id__gt=1) gt大于# group_list = models.UserGroup.objects.filter(id__lt=1)  lt小于# 刪除# models.UserGroup.objects.filter(id=2).delete() 刪除相當(dāng)于delete from tablename where id=2;# 更新models.UserGroup.objects.filter(id=2).update(title='公關(guān)部') 相當(dāng)于update tablename set title='公關(guān)部' where id = 2;# group_list QuerySet類型(列表)# QuerySet類型[obj,obj,obj]# print(group_list)# for row in group_list:# print(row.id,row.title)
    輸出研發(fā)部,運(yùn)維部
# models.UserInfo.objects.all() group_list = models.UserGroup.objects.all()return render(request,'newindex.html',{"group_list": group_list})

?

轉(zhuǎn)載于:https://www.cnblogs.com/bingabcd/p/7066170.html

總結(jié)

以上是生活随笔為你收集整理的Django框架(二)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。