Django HttpResponseRedirect не ведет на страницу

Я работаю над проектом CS50 project2 commerce. Я пытаюсь создать новый список, но когда я нажимаю на кнопку отправки, он не перенаправляет на индексную страницу, как я хочу. Кто-нибудь может помочь, пожалуйста?

введите описание изображения здесь

def createlisting(request):
if request.method == "GET":
    allCategories = Category.objects.all()
    return render(request, "auctions/create.html", {
        "categories": allCategories
    })
else:
    # get the data from the form
    title = request.POST["title"]
    description = request.POST["description"]
    imageurl = request.POST["imageurl"]
    price = request.POST["price"]
    category = request.POST["category"]

    currentuser = request.user
    # get the contents 
    categoryData = Category.objects.get(categoryName=category)

    #create new list object
    newListing = Listing(
        title=title,
        description=description,
        imageUrl=imageurl,
        price=float(price),
        category=categoryData,
        owner=currentuser
    )
    newListing.save()
    return HttpResponseRedirect(reverse("index"))

Используйте redirect. И вам не нужно использовать else после return в операторе if.

from django.shortcuts import redirect

def createlisting(request):
    if request.method == "GET":
        allCategories = Category.objects.all()
        return render(request, "auctions/create.html", {
            "categories": allCategories
        })
    # POST
    title = request.POST["title"]
    description = request.POST["description"]
    imageurl = request.POST["imageurl"]
    price = request.POST["price"]
    category = request.POST["category"]

    currentuser = request.user
    # get the contents 
    categoryData = Category.objects.get(categoryName=category)

    #create new list object
    newListing = Listing(
        title=title,
        description=description,
        imageUrl=imageurl,
        price=float(price),
        category=categoryData,
        owner=currentuser
    )
    newListing.save()
    return redirect("index")

Попробуйте этот вид:

def createlisting(request):
    allCategories=""
    if request.method == "GET":
        allCategories = Category.objects.all()
    else:
        # get the data from the form
        title = request.POST["title"]
        description = request.POST["description"]
        imageurl = request.POST["imageurl"]
        price = request.POST["price"]
        category = request.POST["category"]

        currentuser = request.user
        # get the contents 
        categoryData = Category.objects.get(categoryName=category)

        #create new list object
        newListing = Listing(
            title=title,
            description=description,
            imageUrl=imageurl,
            price=float(price),
            category=categoryData,
            owner=currentuser
        )
        newListing.save()
        return redirect("index")
    return render(request, "auctions/create.html", {
        "categories": allCategories
    })

enter image description here

Когда я нажимаю кнопку отправки, он показывает мне auctions.models.Category.DoesNotExist: Категория, соответствующая запросу, не существует.

Однако я могу напрямую добавить новый список на странице администратора... Я действительно не понимаю...

Вернуться на верх