7

製品データを追加した後にインデックスページにリダイレクトする以外はすべて正常に機能します。現在、データが保存された後、127.0.0.1 :8000/product/add_product/add_product にリダイレクトされます。

現在、インデックス ページ (add_product.html) が読み込まれると、データベースからデータをレンダリングするテーブルがあり、

  1. 最初に私の URL は >> 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になり、ページが見つからないというエラーが表示されます

私のviews.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})

私のurls.py

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

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

インデックス ページ (add_product.html) を指す URL を取得するにはどうすればよいですか?

4

2 に答える 2

12

127.0.0.1:8000/product/add_product/のビューでこれを 返します

from django.http import HttpResponseRedirect

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

インデックスページにリダイレクトされます。また、「/」の代わりにリバースを使用できるように、 URL名を付けてみてください

ありがとう

于 2012-10-01T10:45:05.867 に答える
6

テンプレートでフォームをaction正しく設定していない可能性があります。

相対 URL の代わりに、

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

アクションには絶対 URL が必要です。

<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 に答える