Djangoでredirectしたい

2024年6月23日

SignUpViewpost メソッド内で redirect を使用して、ユーザーが登録後にリダイレクトする先を指定できます。以下は修正された SignUpView の例です。

python
# tools/views.py
from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth import login
from django.views import View

class SignUpView(View):
    template_name = 'registration/signup.html'

    def get(self, request):
        form = UserCreationForm()
        return render(request, self.template_name, {'form': form})

    def post(self, request):
        form = UserCreationForm(request.POST)
        if form.is_valid():
            user = form.save()
            login(request, user)
            return redirect('home')  # リダイレクト先を適切なURLに変更してください
        return render(request, self.template_name, {'form': form})

上記のコードでは、redirect('home') の部分で、ユーザーが登録後にリダイレクトされる先を home という名前のURLに指定しています。この部分をアプリケーション内の他のURLに変更するか、プロジェクト全体の urls.py で定義されたURLに変更してください。

例えば、プロジェクト全体の urls.pyhome という名前のURLを定義している場合:

python
# your_project/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('tools/', include('tools.urls')),
    path('home/', include('tools.urls')),  # リダイレクト先のURLを定義
    # 他のURLパターンも追加できます
]

上記のようにして、redirect の引数を home から適切なURLに変更してください。

未分類

Posted by ぼっち