① django 怎麼在admin里顯示資料庫的內容
操作方法:首先要運行python manage.py createsuperuser 命令來創建一個管理員賬戶。
然後在url中輸入/admin 即可到達管理員登錄頁,登錄之後會發現並沒有資料庫中要顯示的項目,因為我們還沒有注冊。
接下來我們注冊要在admin中管理的數據模型;在admin.py中注冊模型。然後刷新頁面,即可看到ContactMessage這個數據表了,可以在里邊增刪進行簡單的增刪改查。
② Django中url與path及re_path區別
初學者 一般不能分清兩者的區別,所這簡單介紹下兩者.首先,url是Django 1.x中的寫法,p在Django2.1中,開始舍棄django1.x中的url寫法。在django2.x中,描寫url配置的有兩個函數path和re_path.re_path()函數可以看做是django 1.x中得url函數,即可以在路徑中使用正則.
path與url是兩個不同的模塊,效果都是響應返回頁面, path調用的是python第三方模塊或框架,而url則是自定義的模塊,如Views下的def函數對應你url中的參數值.
例如:
在settings.py文件中有一個ROOT_URLCONF設置,設置的是在訪問網址時通過哪一個url文件去匹配所請求的網址
url或者re_path要復雜一些 (r』^blog/(?P[0-9]{4})/′)首先需要開始符和結尾符 ') 首先需要開始符^和結尾符 ′)首先需要開始符和結尾符,參數匹配一個 ()就是一個匹配參數,
(?P<匹配的欄位名>正則表達式)
進行匹配是不包括get或者post請求方式的參數及域名比如 www.qq.com/blog?num=1 並不會匹配?後邊的字元
可以給request參數設置一個默認值,最常見的分頁url,比如
自定義錯誤頁面關鍵字handler400=blog.views.page_no_find
參數的使用方法path(『blog/str:string/』) 簡單了很多,就是尖括弧,前邊是str代表參數的類型,後面代表參數的名稱
捕獲url中的參數需要用到尖括弧<> 指定尖括弧中的值類型比如int:astr:link這個轉換器還有許多類型比如:
如果遇上路徑和轉換器語法都不足以定義的URL模式,那麼就需要使用正則表達式,這時候就需要使用re_path(),而非path()。
舉例:傳遞 數字結尾的參數
在python3中使用django2的時候,在設置urls的時候,會遇到一些坑。這里做一下記錄。
系統的urls.py里,在1.X的時候,都是採用的url方式。如下
在2.0中,它推薦使用的是path模塊,所以這里就改寫一下。引包
注意:
1.x裡面的寫法是
現在的寫法
這樣一對比就能明白了吧,使用的鏈接是 http://127.0.0.1:8000/page=12&key=abc
1.x中寫法
可是在2.0中你這么寫,會報錯,說什麼app_name的,這個自己可以看一下,怎麼解決呢,其實很簡單,只要在自己項目urls.py中加上這句就行了.如果不加的話可能報錯,
注:
③ 什麼是django
Django是用Python開發的一個免費開源的Web框架,提供了許多網站後台開發經常用到的模塊,使開發者能夠專注於業務部分。並且囊括的Web應用部分可以用於快速搭建高性能、優雅的網站。並且提供了通用Web開發模式的高度抽象,通過DRY的理念為頻繁進行的編程作業提供了快速解決方法。
Django能在開源發行之後吸引眾多追隨者,離不開它所具備的以下優點:
①齊全的功能。自帶大量常用工具和框架,可輕松、迅速開發出一個功能齊全的Web應用。
②完善的文檔。Django已發展十餘年,具有廣泛的實踐案例,同時Django提供完善的在線文檔,Django用戶能夠更容易地找到問題的解決方案。
③強大的資料庫訪問組件。Django自帶一個面向對象的、反映數據模型與關系型資料庫間的映射關系的映射器,開發者無須學習SQL語言即可操作資料庫。
④靈活的URL映射。Django提供一個基於正則表達式的URL分發器,開發者可靈活地編寫URL。
⑤豐富的模板語言。Django模板語言功能豐富,支持自定義模板標簽;Django也支持使用第三方模板系統,如jinja2等。
⑥健全的後台管理系統。Django內置了一個後台數據管理系統,經簡單配置後,再編寫少量代碼即可使用完整的後台管理功能。
⑦完整的錯誤信息提示。Django提供了非常完整的錯誤信息提示和定位功能,可在開發調試過程中快速定位錯誤或異常。
⑧強大的緩存支持。Django內置了一個緩存框架,並提供了多種可選的緩存方式。
⑨國際化。Django包含了一個國際化系統,Django組件支持多種語言。
④ Django如何更新資料庫
最簡單的辦法是。為資料庫的表建立一個model。具體做法是這樣子。
1.在settings.py里設置資料庫連回接方式。連接錯誤後答面都沒有辦法
2.在models設置一個資料庫表的對應數據結構,通常叫關系對象模型,所以叫model,它就是一個類。你可以用django-admin.py ...probe,似乎是這個命令,就是一個資料庫的探測命令,可以根據表,自動生成model的代碼。當然如果你先寫了model的代碼就可以用syncdb命令生成資料庫的表
3.在urls.py里設置一個URL的path,當瀏覽器訪問這個path時就可以打開對應的view中的函數
4.在view里
4.1 result=modelclass.objects.all()這個命令可以取出所有的記錄
4.2 然後你可以直接將結果傳遞給模板。由模板顯示。這是最合理的辦法
4.3 在模板里 {% for cols in result %}
4.4 <li>cols.field1</li>
大約就是這樣子。可能說的太粗。你對著教程看就知道了。
⑤ 如何獨立使用django的資料庫訪問功能
1. 安裝Django
[plain] view plain
cd Django-1.4
python setup.py install
2. 安裝postgresql的客戶端:
[plain] view plain
sudo apt-get install -y postgresql-client-9.1 python-psycopg2
3. 新建project:
[plain] view plain
django-admin.py startproject myproject
4. 在myproject下新建app:
[plain] view plain
python manage.py startapp myapp
4. 新增環境變數:
編輯/etc/profile文件,在末尾加入以下語句:
[plain] view plain
<span style="color:#FF0000;"> export PYTHONPATH=$PYTHONPATH:/home/yc/src/myproject
export DJANGO_SETTINGS_MODULE=myproject.settings</span>
5.
假設資料庫已經由Django的另一個應用(名稱為otherapp)建好,資料庫類型是postgresql,名稱為mydb,位於
192.168.1.23。見好的資料庫中有一個表,名稱是otherapp_user,則將otherapp/models.py拷貝到myapp
/models.py。
注意檢查models.py下的class user類的class Meta:部分,如果沒有applabel標簽,則要加上:app_label='otherapp'
再修改/home/yc/src/myproject下的settings.py文件,如下:
[plain] view plain
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'mydb', # 'vps2db_test1' Or path to database file if using sqlite3.
'USER': 'postgres', # Not used with sqlite3.
'PASSWORD': '123', # Not used with sqlite3.
'HOST': '192.168.1.23', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '5432', # Set to empty string for default. Not used with sqlite3.
}
}
[plain] view plain
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'<span style="color:#FF0000;">myapp</span>',
)
6. 在myapp目錄下編寫測試程序
[python] view plain
from models import user
if __name__=="__main__":
try:
u = user.objects.get(id=user_id)
except user.DoesNotExist:
print "user not exist)
return None
else:
return u
⑥ Django教程-02連接初始化資料庫
Django教程——01安裝使用
在上面一篇文章里,介紹了安裝Django的方法,這里說說連接資料庫吧
這篇主要介紹踩的坑和解決辦法
正常連接和初始化資料庫的命令是
執行這個命令的時候,出現了如下報錯
經過一段排查,是我配置資料庫的時候,多嵌套了一層default,修改為如下即可
然後繼續執行migrate時,會報如下錯誤
本機環境是mac電腦,按官方教程操作的時候,發現安裝mysqlclient的python包會依賴本機安裝mysql或者mysql-client,但在裝mysql和mysql-client的時候,發現一直報錯。後面發現解決辦法是,在settings.py文件里,加下如下代碼,即改用pymsql連接即可。
或者在settings.py同目錄的__init__.py里加如上代碼也可以
然後再執行python manage.py migrate命令會發現表順利創建。新增表,不影響原有庫的其他表。
⑦ Django媒體文件URL的配置
在Django中經常需要配置圖片、視頻等表態文件,在配置時較為復雜,這里紀錄一下:
在文件尾部加入以下目錄,用於存放上傳的文件
在models中寫上image欄位其中 %Y 代表年, %m 代表月, blank=True 代表可以為空。當上傳文件時,代表上傳到image目錄下,以當前年月子目錄的文件夾中。
image = models.ImageField(upload_to="image/%Y/%m", blank=True)
其中src中的{{ MEDIA_URL }}會在模板中渲染為第一步中的 /media/
如果您想在模板中使用{{MEDIA_URL}},請在「模板」的「context_processors」選項中添加 django.template.context_processors.media 。
通過以上步驟,基本上可以在前端正常渲染出結果了,但還需要給圖片添加一個URL以正常顯示。
第一行為引入靜態文件的serve,第二行為導入工程配置文件中的 MEDIA_ROOT
在url中加入: