python django基礎(二),pythondjango基礎
django MTV模式之----template模版
django是動態網頁,背景資料需要動態插入到前端中,這時就依賴於django的template模版架構。django支援多種模版架構,下面介紹django內建的。
內建的模版語言可以在django模版中插入一些簡單的代碼和邏輯,例如變數,邏輯判斷等。下面是一些模版的基礎用法:(在html代碼中插入該模版標籤)
變數:
{{result}}
if判斷
{%if%}{%endif%}
迴圈for
{%for%}{%endfor%}
過濾器(用於變數轉化)
例子:使變數輸出為時間格式
{{ item.publishtime|date:'Y-m-d H:i:s' }}
django有大量的過濾器來處理前端的展示,具體可參考:
http://djangobook.py3k.cn/appendixF/
https://docs.djangoproject.com/en/1.10/howto/custom-template-tags/
後台view會將資料傳遞給前台模版,交給前台模版去渲染。
django MTV模式之----view
views.py是django中python幕後處理的主要邏輯代碼的地方,一般來說每訪問一個網頁,會對url進行匹配,這時會調用相應的views(實際就是一個python的自訂函數),之後view裡面的函數對資料經過處理之後返回給前端。
一個view簡單例子:
def blogmanager(request): results = BlogList.objects.all().order_by('-time') context = {'results': results} return render(request, 'bloglist/blogmanager.html', context)
在view中用get方法擷取前端提交的表單資訊:
dayfrom = request.GET.get("dayfrom", "") dayto = request.GET.get("dayto", "") filterresult = request.GET.get("result", "")
在views中直接返迴文本
return HttpResponse("disabled account")
在view中進行頁面跳轉
HttpResponseRedirect('/file/test/')
在view裡返回資料給前台渲染,傳遞的context變數可以是字典的資料類型
return render(request, 'blog/publishlist.html', context)
django----url匹配
urls.py是配置訪問相應url對應哪個views去處理的地方。django的url格式還是比較優雅和簡單的,並且支援Regex。
url配置寫法例子如下:
from django.conf.urls import patterns, include, urlfrom django.contrib import adminadmin.autodiscover()urlpatterns = patterns('', url(r'^$', 'blog.views.home', name='home'), url(r'^record/(\d+)/', 'blog.views.record', name='record'), url(r'^stats/(\S+)/', 'blog.views.stats', name='stats'),)
url標籤,定義name,在views裡面加一個name="",name可以寫在模版裡,這樣不用寫死url地址。
url(r'^blogmanager/index$', 'sjzs.views.blogmanager', name='blogmanager'),<a class="brand" href="{%url 'blogmanager'%}">部落格資訊一覽</a>
但是這個名稱是全域唯一的,不能重複。
url.py嵌套,在django工程目錄下有個url.py,另外在各自的應用目錄下也可以建立一個url.py,然後在工程目錄的url.py中加上一句include,這樣某個應用url的匹配就可以具體寫在應用目錄下的url.py,如下:
url(r'^subblog/', include('subblog.urls'))
url 參數,django支援從url中擷取參數
url(r'^record/(\d+)/', 'blog.views.record', name='record'),
django----admin後台管理
admin是django內建的後台管理,很方便使用,這個自動產生的後台頁面裡面有很多內容,包括使用者和許可權管理,也包括了應用的資料庫內容,超級管理員可以編輯內容,增刪改查,並且可以方便尋找和過濾資料。
開啟admin:在settings.py檔案的install_apps裡去掉admin的注釋,如下:
INSTALLED_APPS = ('django.contrib.admin',)
更新資料庫
python manage.py syncdb
在admin.py檔案加入下面代碼:
from django.contrib import adminfrom polls.models import BlogListclass BlogList_Admin(admin.ModelAdmin): list_display = ('id', 'blogtitle', 'time','number', 'content','blank',) list_filter = ('id', 'blogtitle','time',) search_fields = ('number','time',) list_per_page=20admin.site.register(BlogList, BlogList_Admin)
在urls.py開啟admin
from django.contrib import adminadmin.autodiscover()url(r'^admin/', include(admin.site.urls)),
為後台建立超級管理員
manage.py createsuperuser --username=test --email=test@gmail.com
訪問admin後台
python manage.py runserverhttp://127.0.0.1:8000/admin/
xadmin
如果覺得django內建的admin介面比較簡陋,還可以使用xadmin,功能比較多。
http://xadmin.readthedocs.io/en/docs-chinese/
django更多資訊參考:
https://www.djangoproject.com/