Bro*_*don 12 django django-class-based-views
我有一个基于类的视图,我希望只有在用户登录时才能访问它,并且我希望将未经身份验证的用户重定向回索引页面
这是有问题的观点:
class ArtWorkCreate(CreateView, LoginRequiredMixin):
login_url = '/login/'
redirect_field_name = 'login'
model = ArtWork
fields = ['userID','title','medium','status','price','description']
Run Code Online (Sandbox Code Playgroud)
这是相关的模型
class ArtWork(models.Model):
userID= models.ForeignKey(MyUser, on_delete=models.CASCADE)
title = models.CharField(max_length=100)
medium = models.CharField(max_length=50)
price = models.FloatField()
description = models.TextField(max_length=1000)
status = models.CharField(max_length=4, default="SALE")
def __str__(self):
return self.title
Run Code Online (Sandbox Code Playgroud)
这是相关的网址
url(r'artwork/add/$', ArtWorkCreate.as_view(), name='artwork-add'),
Run Code Online (Sandbox Code Playgroud)
这是我想重定向到用户未登录的 URL id
url(r'^index/$', views.index, name='index'),
Run Code Online (Sandbox Code Playgroud)
我的目标是使表单只能访问登录用户,他们只能在他们自己的名字下添加艺术品项目
最后这是模型形式
class ArtWorkForm(ModelForm):
class Meta:
model = ArtWork
fields = ['title','medium','status','price','description']
Run Code Online (Sandbox Code Playgroud)
anj*_*505 17
我们应该继承第LoginRequiredMixin一个。因为 python 会考虑dispatch第一个继承类的方法(在这种情况下)。
from django.contrib.auth.mixins import LoginRequiredMixin
class ArtWorkCreate(LoginRequiredMixin, CreateView):
login_url = '/index/'
redirect_field_name = 'index'
model = ArtWork
Run Code Online (Sandbox Code Playgroud)
小智 5
只需在 settings.py 文件中定义一个登录 url(同时删除类上的登录 url)
#settings.py
LOGIN_URL = 'login'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13194 次 |
| 最近记录: |