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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django框架(二)

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

一:Django項目創建步驟:

方式1:命令創建:

進入指定目錄

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(一個Django項目可以有多個app)

admin:Django自帶后臺管理相關配置,用于操作數據庫(數據庫的創建,修改,刪除,數據表數據行的增刪改查),可以不用pymysql和Navicat操作數據庫了

apps.py:表示當前app的配置文件

models.py:寫類,Django根據這個類來操作數據庫表(和SQLAlchemy相似,寫類和函數操作數據庫)

test.py:快速做單元測試

views.py:視圖函數(業務處理)

migrations:創建數據庫表和行時,Django自動生成的文件

方式2:圖形界面創建Django項目

?二.

?

啟動項目,輸入URL地址:http://127.0.0.1:8000/admin/出現一個登錄界面

?

?1.路由系統:

  url ->函數

  a.一一對應關系

    /login/->def login()

  b./add_user  

  HTML:有一個搜索引擎優化(SEO),要想排名靠前就不要寫?<li>{{ i }} | <a href="/edit/?nid={{ i }}">編輯</a></li> 這樣的語句,如果是GET傳參,nid的值經常變動,因為這種語句的權重比較低。

  而要寫這樣的語句

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

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

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

?

?

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

創建表:

class UserGroup(models.Model):"""部門"""title = models.CharField(max_length=32) 創建部門表 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自動生成ug_id列 創建員工表

6.創建數據表:
命令:
python manage.py makemigrations 第一條記錄相關日志
python manage.py migrate 第二條執行結果
英文單詞: migrate:移動; 遷移,移往; 隨季節而移居;

nid = models.BigAutoField(primary_key=True) 這一行可以不用設置
Django里會自動設置主鍵,主鍵名默認為id,而且是自增id,null=True設置默認為空或 default=1默認值為1,CharField必須設置max_length最大長度,不然程序會報錯

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

Django1.8以后把settings中的TEMPLATE_DIRS配置項移到了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文件里的目標配置文件TEMPLATES

migrations下面的py文件不要刪,這個可以查看創建表和增刪改查表等操作的記錄,可以及時發現問題

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

2.python manage.py migrate拿著生成的配置文件去生成數據庫的語句

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

1.python manage.py makemigrations

2.python manage.py migrate

?

?數據表的增刪改查

#1.新增:

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

http://127.0.0.1:8000/app01/index.html 瀏覽器訪問,相當于執行了sql語句

#2.查:

group_list = models.UserGroup.objects.all() 查所有部門表信息 print(group_list) #輸出一個QuerySet對象 輸出:<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>]>

?

# 數據庫相關操作 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相當于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() 刪除相當于delete from tablename where id=2;# 更新models.UserGroup.objects.filter(id=2).update(title='公關部') 相當于update tablename set title='公關部' where id = 2;# group_list QuerySet類型(列表)# QuerySet類型[obj,obj,obj]# print(group_list)# for row in group_list:# print(row.id,row.title)
    輸出研發部,運維部
# models.UserInfo.objects.all() group_list = models.UserGroup.objects.all()return render(request,'newindex.html',{"group_list": group_list})

?

轉載于:https://www.cnblogs.com/bingabcd/p/7066170.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。