接上一篇,
django是动态的网页,后台的数据需要动态的插入到前端中,这时就依赖于django的template模版框架。django支持多种模版框架,下面介绍django自带的。
自带的模版语言可以在django模版中插入一些简单的代码和逻辑,例如变量,逻辑判断等。下面是一些模版的基础用法:(在html代码中插入该模版标签)
{{result}}
{%if%}
{%endif%}
{%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会将数据传递给前台模版,交给前台模版去渲染。
views.py是django中python后台处理的主要逻辑代码的地方,一般来说每访问一个网页,会对url进行匹配,这时会调用相应的views(实际就是一个python的自定义函数),之后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/\')
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\'),
博客信息一览
但是这个名称是全局唯一的,不能重复。
url.py嵌套,在django工程目录下有个url.py,另外在各自的应用目录下也可以创建一个url.py,然后在工程目录的url.py中加上一句include,这样某个应用url的匹配就可以具体写在应用目录下的url.py,如下:
url(r\'^subblog/\', include(\'subblog.urls\'))
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
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
python manage.py runserver
http://127.0.0.1:8000/admin/
https://www.djangoproject.com/
下一篇:Flask自己写日记蓝图