Django系列教程(1)--入門
創建項目
- 命令 django-admin startproject test1
進入 test1目錄,目錄結構如下
目錄說明
- mange.py:一個命令行工具,可以使你用多種方式對Django項目進行交互
- init.py:一個空文件,它告訴python這個內層的與項目重名的test1目錄應該看做一個python包
- setting.py:項目的配置
- urls.py:項目的url聲明
- wsgi.py:項目與wsgi兼容的web服務器入口
設計模型
設計介紹
- 本示例完成“圖書-英雄”信息的維護,需要存儲兩種數據:圖書,英雄
- 圖書表結構的設計:
- 表名:BookInfo
- 圖書名稱:btitle
- 圖書發布時間:bpub_date
- 英雄表結構的設計:
- 表名:HeroInfo
- 英雄名:hname
- 英雄性別:hgender
- 英雄簡介:hcontent
- 所屬圖書:hbook
- 圖書-英雄的關系為一對多
數據庫配置
- 在settings.py文件中,通過DATABASE項進行數據庫設置
- jango支持的數據庫包括sqlite,mysql等,默認的為sqlite
創建應用
- 在一個項目中可以創建一到多個應用,每個應用進行一種業務處理
創建應用的命令
python mange.py startapp booktest
應用的目錄結構如下:
定義模型類
- 有一個數據表,就對應一個模型類
- 打開models.py,定義模型類
from django.db import models
class BookInfo(models.Model):
btitle = models.CharField(max_length=20)
bpub_date = models.DateTimeField()
def __str__(self):
# 當輸出對象時,會調用str方法
return "%d" % self.pk
class HeroInfo(models.Model):
hname = models.CharField(max_length=20)
hgender = models.BooleanField()
bcontent = models.CharField(max_length=100)
hBook = models.ForeignKey('BookInfo')
def __str__(self):
return "%d" % self.pk
生成數據表
**模型:編輯settings.py文件,將booktest應用加入到installed_app中
生成遷移文件:根據模型類生成sql語句
python mange.py makemigrations
python manage.py migrate
服務器
運行如下命令即可開啟服務器
python mange.py ruanserver ip:port
可以不寫ip,端口默認為8000
第一次打開開發版服務器是這個樣子
后臺管理
使用django的管理
- 創建一個管理員用戶
python manage.py createsuperuser ,按提示輸入相關信息
啟動服務器,即可通過“127.0.0.1/admin”進入后臺
向admin注冊booktest模型
- 打開booktest/admin.py文件,注冊模型
from django.contrib import admin
from .models import BookInfo,HeroInfo
admin.site.register(BookInfo)
admin.site.register(HeroInfo)
這樣,就可以在/admin站點中對模型的屬性進行增刪改查等操作
自定義管理頁面
- Django提供了admin.ModelAdmin類
- 通過定義ModelAdmin的子類,可以定義模型在Admin界面的顯示方式
class QuestionAdmin(admin.ModelAdmin):
...
admin.site.register(Question,QuestionAdmin)
列表頁屬性
list_display:顯示字段,可以列頭進行排序
list_display = [‘pk’,’btitle’,’bpub_date’]
list_filter:過濾字段,過濾框會出現在右側
lister_filter = [‘btitle’]
search_fields:搜索字段,搜索框會出現在上側
search_fields = [‘btitle’]
list_per_page: 分頁,分頁框會出現在下側
list_per_page =10
添加,修改頁屬性
fields:屬性的先后順序
fields = [‘bpub_date’,btitle]
fieldsets:屬性分組
fieldsets = [
('basic',{'fields':['btitle']}),
('more',{'fields':['bpub_date']}),
]
視圖
- 在django中,視圖對web請求進行回應
- 視圖接受request對象作為第一個參數,包含了請求的信息
- 視圖就是一個Python函數,被定義在view.py中
# coding=utf-8
# from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse('index')
def detail(request,id):
return HttpResponse("detail %s" % id)
定義完視圖后,需要配置urlconf,否則無法處理請求
URLconf
- 在Django中,urlconf包括正則表達式和視圖函數名兩個元素,web發出的請求會利用正則與其匹配,進入相應的view函數
- 在test1/urls.py插入booktest,使主urlconf連接到booktest.urls模塊
url(r’^’,include(‘booktest.urls’))
.在booktest中的url.py中添加urlconf
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$',view.index),
url(r'^([0-9]+)/$',views.detail),
]
模板
- 模板是html頁面,可以根據視圖中傳遞的數據填充值
- 創建模板的目錄如下圖
- 修改settings.py文件,設置TEMPLATES值
‘DIRS’: [os.path.join(BASE_DIR,’templates’)],
Render簡寫
- Django提供了函數Render()簡化視圖調用模板構造上下文
# coding=utf-8
from django.shortcuts import render
from .models import BookInfo
def index(request):
booklist = BookInfo.objects.all()
return render(request,'booktest/index.html',{'booklist':booklist})
def detail(request,id):
book = BookInfo.objects.get(pk=id)
return render(request,'booktest/detail.html',{'book':book})
智能推薦
django-1-入門
MVC MVT 開發流程 搭建開發環境 安裝virtualenv 創建一個獨立的Python虛擬環境 進入虛擬環境 退出虛擬環境 刪除虛擬環境 安裝django 創建項目 項目目錄說明 設計模型 數據庫配置 創建應用 定義模型類 生成數據表 測試數據操作 關聯對象的操作 管理站點 服務器 管理操作 使用django的管理 管理界面本地化 向admin注冊booktest的模型 自定義管理頁面 列表...
0基礎學django系列教程(1)—————— 虛擬環境安裝
創建 首先安裝虛擬環境,命令如下: 接下來還要安裝虛擬環境擴展包,命令如下: 安裝虛擬環境包裝器的目的是使用更加簡單的命令來管理虛擬環境。 修改用戶家目錄下的配置文件.bashrc,添加如下內容: 使用source .bashrc命令使配置文件生效。 創建python3虛擬環境的命令如下: 小總結 創建成功后,會自動工作在這個虛擬環境上。 創建虛擬環境需要聯網。 工作在虛擬環境上,提...
Django快速入門教程
Django 此文檔基于Django3.0 簡介 django是一個基于python的開源web框架,旨在簡化開發者開發過程,使得開發起來快速簡潔。采用了MVT軟件設計模式(Model模型、View視圖、Template模板) 這里MTV模型 Template呈現給用戶,用戶通過Template發送請求給View,View獲取Model的數據并將數據反饋給Template,Template接著渲染...
Django入門系列(1): 模板中如何避免硬編碼URL以及最佳處理方式
小編前面做了個小調查,發現本公眾號超過半數的讀者可能還是學生,接觸和使用Django還不滿6個月,小編決定提筆另啟動Django新手入門系列,與現有的Django基礎系列并行(實際上現在Django基礎系列更新到現在很多新手讀起來已經感到有些難度了)。對于中級讀者與技術大咖們,小編正在籌備Django源碼閱讀系列和DRF系列,會提供更深些的內容。本文是Django新手入門小知識系列的第一篇,介紹如...
猜你喜歡
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...