Django筆記一
##這裡是Django日常工作中隨手記錄下來的一些筆記和摘要。便於日後查詢。
首先,Django需要很多第三方包,我這裡直接用virtualenv做環境部署,這樣可以為每個應用建立一套獨立的隔離的python執行環境。
用virtualenv建立一個獨立的虛擬環境:
pip install virtualenv
mkdir virtualenv
cd virtualenv/
建立並進入虛擬環境:
virtualenv --no-site-packages ffvenv #建立環境
source ffvenv/bin/activate #進入虛擬環境
退出當前虛擬環境:
deactivate
virtualenvwrapper 是可選方案,它可以提供多個虛擬環境的統一管理方案,安裝如下:
pip install virtualenvwrapper
在虛擬環境中安裝python3和pip
python下載連結https://www.python.org/ftp/python/
pip -V
pip install --upgrade pip
pip install Django==1.11.8
另外,附上windows下建立虛擬環境並配置django的方案:
pip install virtualenvwarpper-win mkvirtualenv testvir2 deactivate #退出 workon workon testvir2 #進入虛擬環境 pip list pip install requests pip uninstall requests pip install Django==1.11.8
Django的settings檔案配置
資料庫配置: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': "testdjango", 'USER': "root", 'PASSWORD': "xxx", 'HOST': "192.168.1.xxx" } } #資料庫配置 LANGUAGE_CODE = 'zh-hans' #中文配置 TIME_ZONE = 'Asia/Shanghai' #時區配置 USE_TZ = False #資料庫時間配置
TEMPLATE下的DIRS的配置
新建STATICIFLES_DIRS的配置
PyCharm執行:
makemigrations
migrate #生成資料表
編寫view.py
配置urls.py
Html和css檔案分離
css檔案分離與地址修改
安裝mysql-python
下載Mysql包:
下載地址: http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python
找到 32位或64位安裝包:
MySQL_python-1.2.5-cp27-none-win32.whl
MySQL_python-1.2.5-cp27-none-win_amd64.whl
然後執行:
pip install MySQL_python-1.2.5-cp27-none-win32.whl
驗證Django:
python3
import django
django.get_version()
linux命令列中執行命令,建立一個專案:
django-admin.py startproject Djangotest
pip install pysqlite
yum install sqlite*
python manage.py startapp learn #新建一個應用
systemctl stop firewalld.service
在我們建立的專案裡修改setting.py檔案
ALLOWED_HOSTS = [’’] #在這裡請求的host添加了
python manage.py runserver 0.0.0.0:8080
通常情況下,在Django中,一個Model對應資料庫中的一個數據表,
這個Model以類的形式表現出來,它包含了一些基本欄位及資料的一些行為。
Django以建立類的形式建立資料表。
所有對資料庫的操作,都是對類及類的物件進行操作。
不需要寫SQL語句。
這就是ORM物件關係對映。
隱藏資料訪問細節,把SQL語句都封裝起來。
建立一個類,繼承models.Model,這個類就是一張資料表,
在類中建立欄位,欄位就是類裡面的屬性(變數)。
如:attr = models.CharField(max_length=32,default=‘title’)
命令列中進入manage.py的同級目錄,
執行python manage.py makemigrations app (這裡的app是指的你的app的名字)
再執行python manage.py migrate
如果是PyCharm,那就執行:
startapp app (這裡的app是指的你的app的名字)
makemigrations app
migrate app
然後就可以檢視資料庫是否做了表結構的改變
檢視所執行的sql語句:
sqlmigrate app名 檔名
sqlmigrate message 0001
建超級使用者命令createsuperuser
原始碼安裝xadmin:
1、github下載xadmin原始碼
2、複製到Project目錄下
3、修改settings檔案:
INSTALLED_APPS 中新增
'xadmin',
'crispy_forms',
4、安裝依賴包:
pip install django-crispy-forms django-formtools
pip install six future httplib2
pip install django-import-export
import xadmin
urlpatterns = [
url(r'^xadmin/', xadmin.site.urls),
]
6、PyCharm–Debug測試一波
如果要合併目錄,比如所有app放到apps目錄和extra_apps目錄中,,settings配置如下:
......
import sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps'))
......
一個表中的FOREIGNKEY指向另一個表中的 PRIMARY KEY
django中的models只是建立對錶的描述,一個類對應資料庫中的一個表------建立目錄並記錄makemigrations------在資料庫中建立表migrate
user = models.ForeignKey(UserProfile, verbose_name=u"使用者")
verbose_name_plural是verbose_name的複數形式
所以verbose_name_plural = verbose_name ,實際上是讓複數形式等於原始引數,否則會在名稱後面自動加S
在xadmin後端管理介面裡,對該Model進行新增操作的時候,報錯:list index out of range
原因有兩方面:
1、在建立Model的時候,存在型別是DateTimeField的欄位
2、input_html報錯,Django後續新版本追加了spaceless標籤的提交記錄
解決方案:找到input_html定義,換一種拆分方式,用“/><”替換掉“\n”,
修改widgets.py原始程式碼:
input_html = [ht for ht in super(AdminSplitDateTime, self).render(name, value, attrs).split('\n') if ht != '']
下面為改好的:
input_html = [ht for ht in super(AdminSplitDateTime, self).render(name, value, attrs).split('/><') if ht != '']
input_html[0] = input_html[0] + "/>"
input_html[1] = "<" + input_html[1]
參考連結:
http://blog.csdn.net/yuhan963/article/details/79167743
django error: [Errno 10053]:
現象:反覆重新整理頁面,debug就會報這個錯,
google了一下,應該是屬於django版本的問題,不影響什麼功能。
參考連結: