zoukankan      html  css  js  c++  java
  • python 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=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/

    django更多信息参考:

    https://www.djangoproject.com/

  • 相关阅读:
    Qt编译出错:“Cannot find file...... .pro."
    谈论如何有效地保护你的数据
    购书网
    VC非模态对话框创建和销毁
    在GUI程序中使用控制台的两种方法
    fatal error C1010: unexpected end of file while looking for precompiled header directive
    burp抓取手机包
    为firefox添加flash插件
    msfvenom生成linux后门
    kali下操作 Apache2
  • 原文地址:https://www.cnblogs.com/crazymanpj/p/5947769.html
Copyright © 2011-2022 走看看