django學習
django-simple-captcha==0.4.6
django-pure-pagination-0.3.0
配置網易郵箱(163)如下:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = "smtp.163.com"
EMAIL_PORT = 25
EMAIL_USE_TLS = False
使用者資訊:
使用者名稱:Mr_Robot
密碼:Mr.Robot
暱稱:痞人八戒
mysql安裝資訊:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'djangodemo',
'USER': 'Mr.Robot',
'PASSWORD': 'Mr.Robot',
'HSOT': '127.0.0.1',
}
}
mkvirtualenv virtualenvironment_name(建立虛擬環境)-->
大量內建應用
++後臺管理系統admin
++使用者認證系統auth
++回話系統sessions
安全性
++表單驗證
++SQL隱碼攻擊
++跨站點攻擊
設定databases,templates下的dirs,新建的staticfiles_dirs
migration生成資料表-->編寫views.py(後臺的業務邏輯:編寫負責相應url請求的函式/功能模組)-->配置urls.py(將使用者的請求url對映到某一個函式/模組)-->{1、HTML與css檔案分離 2、css檔案分離與地址修改}
STATICFILES_DIRS=[
os.path.join(BASE_DIR,'static')
]設定靜態檔案的預設目錄
ORM (Object Relation Mapping物件關係對映)
models.py和資料庫相關,定義資料庫中的表 django1.8後migrations 資料移植、資料遷移(新出現的)也是和資料庫相關的
使用了ORM模型,
models:django提供了大量的field型別,這些型別不僅對應著資料庫中的型別,也對應著很多更加高階的型別
models.ForeignKey
models.DateTimeField
models.IntegerField
models.IPAddressField
models.FileField
models.ImageField
admin.py給admin應用做配置使用
test.py用於測試(用於放置測試指令碼)
專案目錄檔案
++manage.py管理專案,例如runserver啟動伺服器
++settins.py整個網站的配置情況 settings中的templates用於配置處理模板檔案的類
settings中ALLOWED_HOSTS表示允許訪問本程式的使用者,若設定為'localhost',則只允許外界用localhost訪問本網站
ROOT_URLCONF指向url配置檔案
url
urls.py對映配置檔案:決定一個url訪問被哪個程式(函式)相應 urlpatterns即對映表
為了避免在同一個url配置檔案中存在url衝突,可以用include包含其他url配置檔案,但是其他url配置檔案中的url被“拉長”了。例如:
在根目錄的url檔案中進行配置: url(r'^index/',include('blog.urls')),
在blog目錄中的url檔案中進行配置: url(r'^index/',views.index),
那麼實際訪問index的url應該是******index/index/
通常將blog中的url配置成空字串,即用正規表示式“r'^$'”約束為空字串
****注意配置url的時候一定注意在url的末尾加上'/'這樣配置,使用者訪問該url時,末尾無論加不加'/'都可以成功訪問。
templates
HTML檔案,使用了Django模板語言(DTL)
DTL初步
render()函式中支援一個dict型別的引數
該字典是後臺傳遞到模板的引數,鍵為引數名
在模板中使用{{引數名}}來直接使用
django會按照INSTALLED_APPS中的新增順序查詢Templates,因此不同app下templates目錄中同名.html檔案會造成衝突
解決辦法:在各app的templates目錄下建立一個與該app同名的資料夾,然後將各自具有衝突的頁面放進去即可
_init_.py宣告模組的檔案
++wsgi.py :python應用程式和web伺服器之間的介面
migrate makemigrations和同步資料庫有關
將新新增的應用
子目錄project-name中是一些關於專案的配置檔案:
++總的urls配置檔案 urls.py 以及部署伺服器時用到的 wsgi.py 檔案
++__init__.py 是python包的目錄結構必須的,與呼叫有關。
django-admin startproject project-name
django-admin startapp app-name
django-admin start
mysql配置:
user:MrRobot
password:Mr.Robot
dbadmin
workon檢視當前有哪些虛擬環境
workon 虛擬環境名 :即進入想要進入的虛擬環境
使用url別名(避免後期改動url的時候改動大量語句)
html中:
<form action="{% url 'go_form' %}" method="post" class="smart-green">
url.py中:
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^form_go/$', getform,name='go_form'),
]
解決model迴圈引用的問題:分層設計
為方便管理一個大平臺下的各app,我們通常將所有app統一存放在專案根目錄的apps(Programmer所建)下,此時必須在在專案settings的檔案中,進行如下配置:
import sys
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
即將apps目錄作為第一搜尋目錄(下標為0)
PEP8 (Python編碼規範)
賦值"="兩遍加空格
給出多引數時,逗號後面空格再寫下一項
class Course(models.Model):
# Course即資料庫表名,django中均繼承自models.Model
name = models.CharField(max_length=50, verbose_name=u"課程名")
# CharField指該列為char型別,verbose_name指該列對應名稱,字首u指進行unicode編碼
detail = models.TextField(verbose_name=u"課程詳情")
# detail為文字域
learn_times = models.IntegerField(default=0, verbose_name=u"學習時長(分鐘)")
image = models.ImageField(upload_to="courses/%Y/%m",verbose_name=u"封面圖片", max_length=100)
# upload_to指該圖片的url地址
add_time = models.DateTimeField(default=datetime.now, verbose_name=u"新增時間")
# default=datetime.now指預設為當前時間
class Meta:
# Meta前面空一行
verbose_name = u"課程"
# verbose_name即對該model的名字進行設定
verbose_name_plural = verbose_name
# verbose_name_plural是對model的複述,如果註釋以上語句,則系統進行解析時會自動在verbose_name後加上's'
過載model中class的__unicode__(def)方法可以自定義該model的"縮寫"顯示格式
django在模板引擎中提供了value的default_if_none:'' 代表如果該值為none,則不顯示
踩過的坑
一、
繼承自AbstractUser的UserProfile類,在用admin新增使用者時出現錯誤:1452, 'Cannot add or update a child row: a foreign key constraint fails是因為在第一次做資料庫修改時,必須在做任何資料遷移之前做makemigrations命令。
解決辦法:刪庫-->重新建立superuser-->makemigrations-->migrate即可
二、django裡的"計算機玄學"
email_send.py中,傳送驗證碼型別為更新使用者郵箱時,若給形參send_type傳輸"update_email"時,則出現data too long異常,郵件始終無法發出,而改為update時,則沒有錯誤
模板引擎
for迴圈中有存在內建的迴圈記數變數{{ forloop.counter }}可調出(從1開始)
django-pure-pagination-0.3.0
配置網易郵箱(163)如下:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = "smtp.163.com"
EMAIL_PORT = 25
EMAIL_HOST_USER = "************@163.com"
#郵箱賬戶
EMAIL_USE_TLS = False
EMAIL_FROM = "********************@163.com"
# 郵箱賬戶
使用者資訊:
使用者名稱:Mr_Robot
密碼:Mr.Robot
暱稱:痞人八戒
mysql安裝資訊:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'djangodemo',
'USER': 'Mr.Robot',
'PASSWORD': 'Mr.Robot',
'HSOT': '127.0.0.1',
}
}
mkvirtualenv virtualenvironment_name(建立虛擬環境)-->
大量內建應用
++後臺管理系統admin
++使用者認證系統auth
++回話系統sessions
安全性
++表單驗證
++SQL隱碼攻擊
++跨站點攻擊
設定databases,templates下的dirs,新建的staticfiles_dirs
migration生成資料表-->編寫views.py(後臺的業務邏輯:編寫負責相應url請求的函式/功能模組)-->配置urls.py(將使用者的請求url對映到某一個函式/模組)-->{1、HTML與css檔案分離 2、css檔案分離與地址修改}
STATICFILES_DIRS=[
os.path.join(BASE_DIR,'static')
]設定靜態檔案的預設目錄
ORM (Object Relation Mapping物件關係對映)
models.py和資料庫相關,定義資料庫中的表 django1.8後migrations 資料移植、資料遷移(新出現的)也是和資料庫相關的
使用了ORM模型,
models:django提供了大量的field型別,這些型別不僅對應著資料庫中的型別,也對應著很多更加高階的型別
models.ForeignKey
models.DateTimeField
models.IntegerField
models.IPAddressField
models.FileField
models.ImageField
admin.py給admin應用做配置使用
test.py用於測試(用於放置測試指令碼)
專案目錄檔案
++manage.py管理專案,例如runserver啟動伺服器
++settins.py整個網站的配置情況 settings中的templates用於配置處理模板檔案的類
settings中ALLOWED_HOSTS表示允許訪問本程式的使用者,若設定為'localhost',則只允許外界用localhost訪問本網站
ROOT_URLCONF指向url配置檔案
url
urls.py對映配置檔案:決定一個url訪問被哪個程式(函式)相應 urlpatterns即對映表
為了避免在同一個url配置檔案中存在url衝突,可以用include包含其他url配置檔案,但是其他url配置檔案中的url被“拉長”了。例如:
在根目錄的url檔案中進行配置: url(r'^index/',include('blog.urls')),
在blog目錄中的url檔案中進行配置: url(r'^index/',views.index),
那麼實際訪問index的url應該是******index/index/
通常將blog中的url配置成空字串,即用正規表示式“r'^$'”約束為空字串
****注意配置url的時候一定注意在url的末尾加上'/'這樣配置,使用者訪問該url時,末尾無論加不加'/'都可以成功訪問。
templates
HTML檔案,使用了Django模板語言(DTL)
DTL初步
render()函式中支援一個dict型別的引數
該字典是後臺傳遞到模板的引數,鍵為引數名
在模板中使用{{引數名}}來直接使用
django會按照INSTALLED_APPS中的新增順序查詢Templates,因此不同app下templates目錄中同名.html檔案會造成衝突
解決辦法:在各app的templates目錄下建立一個與該app同名的資料夾,然後將各自具有衝突的頁面放進去即可
_init_.py宣告模組的檔案
++wsgi.py :python應用程式和web伺服器之間的介面
migrate makemigrations和同步資料庫有關
將新新增的應用
子目錄project-name中是一些關於專案的配置檔案:
++總的urls配置檔案 urls.py 以及部署伺服器時用到的 wsgi.py 檔案
++__init__.py 是python包的目錄結構必須的,與呼叫有關。
django-admin startproject project-name
django-admin startapp app-name
django-admin start
mysql配置:
user:MrRobot
password:Mr.Robot
dbadmin
workon檢視當前有哪些虛擬環境
workon 虛擬環境名 :即進入想要進入的虛擬環境
使用url別名(避免後期改動url的時候改動大量語句)
html中:
<form action="{% url 'go_form' %}" method="post" class="smart-green">
url.py中:
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^form_go/$', getform,name='go_form'),
]
解決model迴圈引用的問題:分層設計
為方便管理一個大平臺下的各app,我們通常將所有app統一存放在專案根目錄的apps(Programmer所建)下,此時必須在在專案settings的檔案中,進行如下配置:
import sys
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
即將apps目錄作為第一搜尋目錄(下標為0)
PEP8 (Python編碼規範)
賦值"="兩遍加空格
給出多引數時,逗號後面空格再寫下一項
class Course(models.Model):
# Course即資料庫表名,django中均繼承自models.Model
name = models.CharField(max_length=50, verbose_name=u"課程名")
# CharField指該列為char型別,verbose_name指該列對應名稱,字首u指進行unicode編碼
detail = models.TextField(verbose_name=u"課程詳情")
# detail為文字域
learn_times = models.IntegerField(default=0, verbose_name=u"學習時長(分鐘)")
image = models.ImageField(upload_to="courses/%Y/%m",verbose_name=u"封面圖片", max_length=100)
# upload_to指該圖片的url地址
add_time = models.DateTimeField(default=datetime.now, verbose_name=u"新增時間")
# default=datetime.now指預設為當前時間
class Meta:
# Meta前面空一行
verbose_name = u"課程"
# verbose_name即對該model的名字進行設定
verbose_name_plural = verbose_name
# verbose_name_plural是對model的複述,如果註釋以上語句,則系統進行解析時會自動在verbose_name後加上's'
過載model中class的__unicode__(def)方法可以自定義該model的"縮寫"顯示格式
django在模板引擎中提供了value的default_if_none:'' 代表如果該值為none,則不顯示
踩過的坑
一、
繼承自AbstractUser的UserProfile類,在用admin新增使用者時出現錯誤:1452, 'Cannot add or update a child row: a foreign key constraint fails是因為在第一次做資料庫修改時,必須在做任何資料遷移之前做makemigrations命令。
解決辦法:刪庫-->重新建立superuser-->makemigrations-->migrate即可
二、django裡的"計算機玄學"
email_send.py中,傳送驗證碼型別為更新使用者郵箱時,若給形參send_type傳輸"update_email"時,則出現data too long異常,郵件始終無法發出,而改為update時,則沒有錯誤
模板引擎
for迴圈中有存在內建的迴圈記數變數{{ forloop.counter }}可調出(從1開始)
相關文章
- django學習(三)Django
- Django學習心得Django
- django學習--templates模板Django
- django學習筆記Django筆記
- 學習Django的推薦Django
- Django的學習資源Django
- Django之學習點滴Django
- django(django學習) 兩張表建立 插入資料Django
- Django全新安裝 - Django入門學習教程1Django
- Django之hello world - Django入門學習教程2Django
- Django Book 學習筆記(上)Django筆記
- Django Book學習筆記(下)Django筆記
- django學習記錄--第一個網頁“hello django”Django網頁
- Django 視覺化Web展示 學習Django視覺化Web
- Django學習(二) 之 模板的使用Django
- 1.Django介紹與學習Django
- [python]django學習筆記 二PythonDjango筆記
- Django學習筆記—驗證碼Django筆記
- Django學習 day70之Django第十六日Django
- Django 最佳學習路徑 | 涵蓋眾多學習資源Django
- Django學習筆記(12)——分頁功能Django筆記
- Django學習筆記(15)——中介軟體Django筆記
- Django練習-學生管理系統案例Django
- Python3-Django框架學習一PythonDjango框架
- Django book2 模型 學習筆記Django模型筆記
- 新手學習Django的十條注意點Django
- Python學習之路17-Django入門PythonDjango
- django book2 表單學習筆記Django筆記
- Django學習筆記《二》圖書管理系統Django筆記
- python中web開發框架Django的學習PythonWeb框架Django
- Django之“學習筆記”網站開發1Django筆記網站
- 使用Oracle中的emp,dept來學習Django ORMOracleDjangoORM
- django學習之pythonbrew部署開發環境DjangoPython開發環境
- (Django)18.3建立網頁:學習筆記主頁Django網頁筆記
- 關於django reset_framework學習之路的筆記DjangoFramework筆記
- 學習 django 的安裝 和第一個頁面Django
- Django學習筆記(20)——BBS+Blog專案開發(4)Django如何使用BootstrapDjango筆記boot
- Django學習筆記(13)——Django的使用者認證元件,檢視層和QuerySet APIDjango筆記元件API