python - 我在使用 @login_required 装饰器时遇到错误,它在 /accounts/login/ 处显示 TemplateDoesNotExist
问题描述
我正在尝试在我的项目中使用登录装饰器,但是当我使用它时它向我显示错误
TemplateDoesNotExist at /accounts/login/
registration/login.html
网址.py
path('', login.login_view , name='login'),
path('fileupload/', FileUpload.fileup, name='fileupload'),
view.py->FileUpload.py->fileup
@login_required(login_url='login')
def fileup(request):
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
form = form.save(commit=False)
form.user = request.user
form.save()
print(form.image)
print(form.user_id)
send_message(str(form.image), form.user_id)
text_filename = 'media/' + str(form.image).rstrip('.jpg') + '.txt'
form.text_file = text_filename
print(str(form.text_file))
form.save()
with open(text_filename, 'r+') as file:
new_text = file.read()
return render(request, "pd/NewText.html", {
'form': form,
'new_text': new_text,
})
else:
form = DocumentForm()
return render(request, 'pd/FileUpload.html', {'form': form})
我想如果用户尚未登录并尝试访问该 url fileupload\
,那么在他/她尚未登录之前它不允许。
解决方案
这就是你想要的。
# Create your views here.
def post_create(request):
if not request.user.is_staff or not request.user.is_superuser:
raise Http404
form = PostForm(request.POST or None, request.FILES or None)
if form.is_valid():
instance = form.save(commit=False)
instance.save()
messages.success(request, "Succefully Created")
return HttpResponseRedirect(instance.get_absolute_url())
context = {
"form": form,
}
return render(request, "post_form.html", context)
您不需要装饰器,只需在您的视图中放入 if 语句来检查用户是否是成员或其他东西,如果不是则引发错误。
这里还有关于创建登录功能的 Mozilla Django 教程
还要确保您的模板位于正确的路径中。
推荐阅读
- google-analytics - 将自定义数据导入GA,自定义维度数据不显示
- heroku - Heroku 托管是否有任何隐藏费用?
- wpf - WPF,按钮继承 Foreground 的内容
- javascript - 使用 javascript 隐藏和显示文本
- java - 尝试在 Java 中的表单中输入数据,然后再转到另一个表单
- asp.net-core - NET Core - 在输入更改时提交,而不是单击按钮
- python - 基于字段值的紧凑数据框
- c++ - 如何组织 Velodyne HL-32 的无组织点云
- python - 在 python 虚拟环境中访问包
- mapbox - 地图框 GL JS。缩放到高度