django是動態的網頁,後臺的數據須要動態的插入到前端中,這時就依賴於django的template模版框架。django支持多種模版框架,下面介紹django自帶的。html
自帶的模版語言能夠在django模版中插入一些簡單的代碼和邏輯,例如變量,邏輯判斷等。下面是一些模版的基礎用法:(在html代碼中插入該模版標籤)前端
變量:python
{{result}}
if判斷正則表達式
{%if%} {%endif%}
循環for數據庫
{%for%} {%endfor%}
過濾器(用於變量轉化)
例子:使變量輸出爲時間格式django
{{ 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/app
後臺view會將數據傳遞給前臺模版,交給前臺模版去渲染。框架
views.py是django中python後臺處理的主要邏輯代碼的地方,通常來講每訪問一個網頁,會對url進行匹配,這時會調用相應的views(實際就是一個python的自定義函數),以後view裏面的函數對數據通過處理以後返回給前端。函數
一個view簡單例子:url
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)
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'),
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=test@gmail.com
訪問admin後臺
python manage.py runserver
http://127.0.0.1:8000/admin/
xadmin
若是以爲django自帶的admin界面比較簡陋,還可使用xadmin,功能比較多。
http://xadmin.readthedocs.io/en/docs-chinese/