/ / як отримати id в URL після подання форми - django, django-form

як отримати id в url після подання форми - django, django-forms

Я використовую форми django, щоб додати новий об'єкт (сторінку)до db і після подання форми я хочу перенаправити URL-адресу деталей сторінки, але проблема полягає в тому, що я не мав ідентифікатора сторінки, що створюється. Я новачок у джанго, тому будь ласка, допоможіть мені в цьому.

файл model.py

class UserPage(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
cover_page = models.FileField()
page_name = models.CharField(max_length=250)

forms.py

from django import forms
from .models import UserPage

class PageForm(forms.ModelForm):
class Meta:
model = UserPage
exclude = ["user"]
fields = [
"page_name",
"cover_page"
]

view.py

def create(request):
if request.user.is_authenticated():
if request.method=="POST":
form = PageForm(request.POST , request.FILES)
if form.is_valid():
instance = form.save(commit = False)
instance.user = User.objects.get(id=request.user.id)
instance.save()
else:
form = PageForm()
context = {
"form" : form,
}
return render(request, "pages/create.html", context)
else:
messages.error(request, "please Login First")
return HttpResponseRedirect(reverse("index"))

url.py

from django.conf.urls import url
from . import views
urlpatterns = [
url(r"^(?P<page_id>[0-9]+)/$", views.pageDetail, name="pagedetail"),
url(r"^create/$", views.create, name="create_check"),
]

Відповіді:

1 для відповіді № 1

Так, у вас є такий id: in instance.

instance.save()
return redirect("pagedetail", page_id=instance.id)