python django基础(二)
admin
2023-07-30 21:42:07
0

接上一篇,

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\'),
    
    博客信息一览

    但是这个名称是全局唯一的,不能重复。

  • 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/

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...