Django admin、session、cookie

一、admin的介绍

admin是django强大功能之一,它能共从数据库中读取数据,呈现在页面中,进行管理。默认情况下,它的功能已经非常强大,如果你不需要复杂的功能,它已经够用,但是有时候,一些特殊的功能还需要定制,比如搜索功能。

二、注册model类到admin的两种方式:

设置中文: 在settings文件中

LANGUAGE_CODE = 'cn-hans'

在admin.py文件中进行注册,以及一些自定制。

<1>   使用register的方法

from blog(应用名) import models   #  导入models

admin.site.register(models.Book)  # 写上对应的表名
admin.site.register(models.Author)
admin.site.register(models.Publish)

<2>   使用register的装饰器

@admin.register(models.Book)

三、进行用户的注册

运行下面的命令、按照提示完成注册。

python manage.py createsuperuser

四、一些自定制属性和样式

在admin.py进行自定制

class BookAdmin(admin.ModelAdmin):  # 类的名字一般是 表名+Admin, 需要继承admin.ModelAdmin。
    
    list_display = ("id", "name", "price")    #  设置展示的字段。  后面参数跟字段名。 

    list_editable = ("name", "price")   #  设置哪些字段可以进行编辑。  后面参数跟字段名。 

    filter_horizontal = ("auth",)   #  水平条件过滤, 后面设置哪个字段,一般是多对多的外键
    
    filter_vertical = ("auth",)  #    纵向条件过滤, 后面设置哪个字段,一般是多对多的外键
    
    list_per_page = 2   #  设置每页展示的数据条数。

    search_fields = ("name", "id", "price")  #  设置搜索域按哪些字段进行搜索。

    list_filter = ("publish__city", "price")   #  右侧的过滤器,后面跟要过滤的字段。

    ordering = ("price", "id")   #  设置按照哪个字段进行排序。

    fieldsets = [("None",{"fields":["name"]}), ("price_information",
    {'fields':["price","author","publish","auth"], "classes":['collapse']})]   
    
    #  在添加值时,None后面显示默认的显示字段名, 后面是详细信息展示的字段。 price_information 是一个名字,classes 是展示的样式。

可以在model里面进行一些配置来改变admin。

class Book(models.Model):
    name = models.CharField(max_length=20, verbose_name="姓名")  verbose_name 设置字段名展示的名字.

Session

request.session["name"] = value  # 对session进行赋值

del request.session["name"]   删除session

清空session  request.session.clear()

request.session.get("name",None)   # 取对应session的值,没有就是None 

Cookie

ret = redirect("/blog/login")   # 通过redirect的返回值进行设置cookie
ret.set_cookie("bili", name, max_age=10)   # key,value,最大时限(s)
return ret

request.Cookie.get("name",None)   # 获取cookie值,如果没有获取到就是None

ret.set_cookie("bili",name,max_age=10,expires=datetime.datetime.utcnow()+datetime.timedelta(days=3))    # expires 也是设置cookie的最大值,可以在现有的基础时间上 加上 一个天数

FBV模式和CBV模式:

FBV模式:在url的分配中,一个url对应一个函数的模式,称为FBV模式。

CBV模式:在url的分配中,一个url对应一个类的模式,称为CBV模式。

url部分:

from blog import views
urlpatterns = [
    url(r'call/$', views.Animal.as_view())   # 通过打点的方式调用 类名+as_view()
]

---------------------------------------------------------
views部分:

from django.views import View

# 需要继承View类
class Animal(View):
  
    #  当有请求进来时,先执行dispatch方法,然后再根据请求的方式,进行反射找到类的方法,执行不同的方法, 可以在这个方法记录日志。
    # 当数据返回给用户是也会经过dispatch方法。
    def dispatch(self, request, *args, **kwargs):   
        return super().dispatch(request, *args, **kwargs)   # 需要返回一个父类的方法,

    def get(self, request):   # get请求  根据请求头的request_method进行匹配
        return HttpResponse("get")

    def post(self, request):  # post请求
        return HttpResponse("post")

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值