django MTV模式之 template模版 django是動態的網頁,後臺的數據需要動態的插入到前端中,這時就依賴於django的template模版框架。django支持多種模版框架,下麵介紹django自帶的。 自帶的模版語言可以在django模版中插入一些簡單的代碼和邏輯,例如變數,邏輯 ...
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格式還是比較優雅和簡單的,並且支持正則表達式。
url配置寫法例子如下:
from django.conf.urls import patterns, include, url from django.contrib import admin admin.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 admin from polls.models import BlogList class BlogList_Admin(admin.ModelAdmin): list_display = ('id', 'blogtitle', 'time','number', 'content','blank',) list_filter = ('id', 'blogtitle','time',) search_fields = ('number','time',) list_per_page=20 admin.site.register(BlogList, BlogList_Admin)
在urls.py開啟admin
from django.contrib import admin admin.autodiscover() url(r'^admin/', include(admin.site.urls)),
為後臺創建超級管理員
manage.py createsuperuser --username=test [email protected]
訪問admin後臺
python manage.py runserver
http://127.0.0.1:8000/admin/
xadmin
如果覺得django自帶的admin界面比較簡陋,還可以使用xadmin,功能比較多。
http://xadmin.readthedocs.io/en/docs-chinese/
django更多信息參考:
https://www.djangoproject.com/