7

除了在添加产品数据后重定向回索引页面之外,一切正常,目前在我的数据保存后,它被重定向到127.0.0.1:8000/product/add_product/add_product

目前,当我的索引页面(add_product.html)加载时,我有一个表格可以呈现数据库中的数据,

  1. 首先我的网址看起来像 >> 127.0.0.1:8000/product/
  2. 然后,一旦我点击添加按钮 url 更改为127.0.0.1:8000/product/add_product/,那里没问题,但是
  3. 当我尝试再次添加数据时,我的 url 转到127.0.0.1:8000/product/add_product/add_product并且我得到一个 Page not found 错误

我的观点.py

from models import Product,Category
from django.shortcuts import render_to_response,get_object_or_404
from django.http import HttpResponseRedirect

def index(request):
    category_list = Category.objects.all()
    product_list = Product.objects.all()
    return render_to_response('product/add_product.html', {'category_list': category_list, 'product_list':product_list})

def add_product(request):
    post = request.POST.copy()

    category = Category.objects.get(name=post['category'])
    product = post['product']
    quantity = post['quantity']
    price = post['price']

    new_product = Product(category = category, product = product, quantity = quantity, price = price )
    new_product.save()
    category_list = Category.objects.all()
    product_list = Product.objects.all()
    return render_to_response('product/add_product.html', {'category_list': category_list, 'product_list':product_list})

我的网址.py

from django.conf.urls.defaults import patterns, include, url

urlpatterns = patterns('product.views',
    url(r'^$', 'index'),                       
    url(r'^add_product/$', 'add_product'),
)

如何让 URL 指向我的索引页(add_product.html)?

4

2 回答 2

12

127.0.0.1:8000/product/add_product/的视图中 返回这个

from django.http import HttpResponseRedirect

def add_product(request)
    ...........................
    ...........................
    return HttpResponseRedirect('/')

它将重定向到索引页面。还尝试提供url 名称,以便您可以使用reverse而不是 '/'

谢谢

于 2012-10-01T10:45:05.867 回答
6

您可能action在模板中错误地设置了表单。

而不是相对网址,

<form method="post" action="add_product">

动作应该有绝对网址:

<form method="post" action="/product/add_product">

作为一项改进,您可以使用url模板标签,这样您就不需要在模板中硬编码 url。

{% load url from future %}
<form method="post" action="{% url 'add_product' %}">

上面的代码片段通过加载新的 url 标签来使用新的 url 语法。

于 2012-10-01T10:48:38.540 回答