python自动化运维学习第十九天--views的返回和admin

views视图返回

当用户发送请求后,urls根据请求路由到views指定方法去处理后会返回,再进行下一步的操作。
views有三种返回方式render、HttpResponse和redirect。
它们分别代表什么意思呢,先看如下view.py的样例

from django.shortcuts import render,HttpResponse,redirect
from demo import models
import json

def login(request):
    a = ['biaoti','geshi',0,1]
    if request.method=='GET':
        obj_li = models.UserInfo.objects.all()
    return render(request, 'login.html', locals())

def test(request):
    dic = {'a':1,'b':2}
    dic_json = json.dumps(dic)
    #return HtttpResponse("this is test!")
    return HttpResponse(dic_json)

def redir(request):
    print("this is redirect.")
    return redirect('/login/')

然后是urls.py文件

from django.conf.urls import url, include
from django.contrib import admin
from demo import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^login/$', views.login),
    url(r'^test/', views.test),
    url(r'^red/', views.redir),
]

结合urls.py和views.py的代码对views的三种返回方式做下说明:

  1. render:当请求login页面到urls时,urls路由到views的login方法,方法处理后再经html渲染再返回。一般用于html渲染。
  2. HttpResponse:当请求test页面时,urls会路由到views的test方法,方法处理后直接返回字符串或者经js处理再返回。一般用于字符串直接返回或者经过js处理的场景
  3. redirect:当请求red页面时,urls会路由到views的redir方法,方法使用redirect函数直接跳转到了login页面,如果login存在则相当于去访问login,否则会返回404。

admin配置

admin是django后台管理页面。admin是django强大功能之一,它能共从数据库中读取数据,呈现在页面中,进行管理。默认情况下,它的功能已经非常强大,如果你不需要复杂的功能,它已经够用,但是有时候,一些特殊的功能还需要定制,比如搜索功能。
admin默认已经创建了,在urls中就可以看到
url(r'^admin/', admin.site.urls)
进入admin页面前需要先创建一个超级用户,在terminal中执行命令,创建超级用户
python manage.py createsuperuser
回车执行,这时会提示数据超级用户的username、Email、password,password最少8位,不能只有数字或字母。输入后,访问http://127.0.0.1:8000/admin,输入刚刚创建的用户名和密码即可进入admin后台。
在这里插入图片描述默认数据很少,只有users和groups。
如果你觉得英文界面不好用,可以在setting.py文件中修改以下选项
LANGUAGE_CODE = 'en-us' #LANGUAGE_CODE = 'zh-hans'
把创建的数据库表数据添加到admin后台页面,通过admin来查看修改数据库数据。需要修改appname下的admin.py文件。
admin.py文件内容如下:

from django.contrib import admin
from demo import models      #导入demo这个app下的models模块(models.py文件用来创建表)
admin.site.register(models.UserInfo)    #添加了models模块里的UserInfo类(UserInfo类是创建的表名)

models.py文件的内容如下:

from django.db import models

class UserInfo(models.Model):
    username = models.CharField(max_length=32,null=True)
    password = models.CharField(max_length=32,null=True)
    def __str__(self):
        return self.username

models.py文件创建了一个UserInfo类,其实就是在数据库中创建了一个UserInfo的表。在admin.py文件中注册这个UserInfo类,即可在admin后台管理UserInfo这个表的数据。
注:在models.py创建类时,最后要添加一个__str__函数返回一个类的变量即表的字段,这样在admin后台的表数据中可以查看到这个字段名的数据,否则都会显示相同的UserInfo object。

没有添加__str__方法返回表的字段名
没有添加__str__方法返回表的字段名
添加了__str__方法并返回了username字段名
添加了__str__方法并返回了username字段名
如果想在查看表数据时显示多个字段或者添加查找、筛选等,可以添加一个类来实现这些功能

 list_display:         指定要显示的字段
 search_fields:        指定搜索的字段
 list_filter:          指定列表过滤器
 ordering:            指定排序字段

可以修改admin.py文件

from django.contrib import admin
from demo import models
# Register your models here.
class MyAdmin(admin.ModelAdmin):       #定义一个类,继承自admin.ModelAdmin
    list_display = ("username","password")     #列出要显示的字段
    search_fields = ("username",)              #可以搜素的字段名
    list_filter = ("username",)                #可以过滤的字段名
    ordering = ("username",)                   #可以排序的字段名

admin.site.register(models.UserInfo,MyAdmin)   #MyAdmin类中定义的功能添加到UserInfo表中

再次查看UserInfo表数据
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wang035759984/article/details/85210823