创建自动创建配置文件的用户后重定向到配置文件

问题描述 投票:0回答:1

很烦人,我是一个初学者,正在从事我的新项目,对此表示歉意。

我创建了此模型,该模型在创建用户时创建一个配置文件:

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'),
    ]
python django redirect django-urls
1个回答
0
投票

您是否可以尝试更改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'),
]
© www.soinside.com 2019 - 2024. All rights reserved.