Home > Net >  Django HttpResponseRedirect doesn´t lead to the page
Django HttpResponseRedirect doesn´t lead to the page

Time:10-10

I am working on the CS50 project2 commerce. I try to create a new list but when I click on the submit button, it doesn´t redirect to the index page as I want. Anybody can help please?

enter image description here

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"))

CodePudding user response:

Use redirect. And you don't need to use else after returning in the if statement.

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")

CodePudding user response:

Try this view:

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
    })
  • Related