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

redirect to profile after creating a user which auto create a profile

抱歉打扰了,我是一名初级程序员,正在开发我的新项目。

我制作了这个模型,它在创建用户时创建一个配置文件:

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

这就是观点。所以我想在这里做的是签署一个用户然后将他的权限设置为专家然后登录他我已经完成但我无法做的是将他重定向到他的专家details/update 登录后的个人资料。 所以如果你能帮助我。提前谢谢你。

以下是观点:

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('/') <<-------

网址可能有帮助

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'),
]

然后在你的重定向中给出你想去的路径表达式

return redirect('app_name:update')