gpt4 book ai didi

python - DJANGO - 多用户

转载 作者:行者123 更新时间:2023-12-04 04:12:51 29 4
gpt4 key购买 nike

我正在 django 中构建一个平台,对于用户注册,我遵循了一些教程,在这一点上,我认为如果我可以添加“新用户注册”会更好。在我的案例中,“学生”可以注册、登录和浏览平台,但我还想创建一种新型用户(员工),他们可以在其中注册为员工、登录并仅访问一个页面,在那里他们可以创建一些新的测验。

我试图在网上查看,但我无法从我已经创建的这一点弄清楚如何去做。

能否就如何解决这个问题给我一些建议/资源?

账户/表格.py

from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User

class FormRegistrazione(UserCreationForm):
email = forms.CharField(max_length=30, required=True, widget=forms.EmailInput())

class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']

账户/views.py

from django.shortcuts import render, HttpResponseRedirect
from django.contrib.auth import authenticate, login
from django.contrib.auth.models import User
from accounts.forms import FormRegistrazione

# Create your views here.

def registrazioneView(request):
if request.method == "POST":
form = FormRegistrazione(request.POST)
if form.is_valid():
username = form.cleaned_data["username"]
email = form.cleaned_data["email"]
password = form.cleaned_data["password1"]
User.objects.create_user(username=username, password=password, email=email)
user = authenticate(username=username, password=password)
login(request, user)
return HttpResponseRedirect("/")
else:
form = FormRegistrazione()
context = {"form": form}
return render(request, 'accounts/registrazione.html', context)

核心/views.py

from django.shortcuts import render, get_object_or_404
from django.contrib.auth.models import User
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic.list import ListView

# Create your views here.
from quiz.models import Questions
from jobs.models import post_job





def homepage(request):
return render(request, 'core/homepage.html')

def userProfileView(request, username):
user= get_object_or_404(User, username=username)
jobs = post_job.objects.all()
categories = Questions.CAT_CHOICES
scores = []
for category in categories:
score = Questions.objects.filter(category=category[0], student= request.user).count()
scores.append(score)
context = {

'user' : user, 'categories_scores' : zip( categories,scores),
'jobs': jobs



}
return render(request, 'core/user_profile.html' , context)



class UserList(LoginRequiredMixin, ListView):
model = User
template_name = 'core/users.html'

最佳答案

根据问题的严重程度,基本上有两种解决方法。

最简单和容易的方法是简单地给一些用户访问管理区域并允许他们使用/admin 区域并在那里创建测验,前提是你在 admin.py 中注册了你的测验模型,如果你走这条路记得给他们只有所需的权限,没有更多,您可以在用户部分的管理区域中执行此操作。

第二种更严肃的方法是这篇优秀文章 here 所遵循的方法.如果您按照文章进行操作,它似乎正是您想要的。对于测验创建表单和 View ,您可以简单地创建一个 protected View ,要求用户是教师,如文章中所示。

根据您的具体需求和用例(您信任员工吗?您希望有多少人使用它?)我可能更倾向于第二种方法,因为允许最终用户访问您的管理区域是不好的实践并可能成为安全漏洞。它确实需要您编写更多代码。希望这会有所帮助。

关于python - DJANGO - 多用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61425882/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com