很烦人,我是一个初学者,正在从事我的新项目,对此表示歉意。
我创建了此模型,该模型在创建用户时创建一个配置文件:
class ExpertSignUpForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = User
@transaction.atomic
def save(self):
user = super().save(commit=False)
user.is_expert = True
user.save()
expert = Expert.objects.create(expert=user)
return user
这是视图。因此,我在这里想要做的是给用户签名,然后将其权限设置为专家,然后登录我已经完成的工作,但是我无能为力,那就是将他重定向到他的专家详细信息/更新中登录后立即登录。因此,如果您可以帮助我。预先谢谢你。
以下是视图:
class ExpertSignUpView(CreateView):
model = User
form_class = ExpertSignUpForm
template_name = 'registration/signup_form.html'
def get_context_data(self, **kwargs):
kwargs['user_type'] = 'expert'
return super().get_context_data(**kwargs)
def form_valid(self, form):
user = form.save()
login(self.request, user)
return redirect('/') <<-------
URL可能会帮助
urlpatterns = [
path('',ExpertListView.as_view(), name='list'),
path('Esignup/',ExpertSignUpView.as_view(), name='expert_signup'),
path('Ssignup/',StudentSignUpView.as_view(), name='student_signup'),
path('create/',ExpertCreateView.as_view(), name='create'),
path('<str:pk>/',ExpertDetailView.as_view(), name='detail'),
path('<str:pk>/update/',ExpertUpdateView.as_view(), name='update'),
path('<str:pk>/delete/',ExpertDeleteView.as_view(), name='delete'),
]
您是否可以尝试更改urlpatterns,以便首先处理最严格的限制
urlpatterns = [
path('Esignup/',ExpertSignUpView.as_view(), name='expert_signup'),
path('Ssignup/',StudentSignUpView.as_view(), name='student_signup'),
path('create/',ExpertCreateView.as_view(), name='create'),
path('<str:pk>/',ExpertDetailView.as_view(), name='detail'),
path('<str:pk>/update/',ExpertUpdateView.as_view(), name='update'),
path('<str:pk>/delete/',ExpertDeleteView.as_view(), name='delete'),
path('',ExpertListView.as_view(), name='list'),
]