我有兩個模型,如下所示:Django中的反向函數是如何工作的?
class Respond(models.Model):
id = models.AutoField(primary_key=True, unique=True)
class Product(models.Model):
responde = models.ForeignKey(Responde, null=True)
name = models.CharField(max_length=255)
description = models.CharField(max_length=10, blank=True, null=True)
price = models.CharField(max_length=50, blank=True, null=True)
和我有形式提交後,將數據發送到遠程服務器,然後接收XML響應。我有一個解析xml文件或文件類對象的腳本。比我保存xml數據到數據庫。
class MyView(View):
template_name = 'myapp/form.html'
def get(self, request, *args, **kwargs):
my_form = MyForm(prefix='my_form')
return render(request, self.template_name, { 'my_form' : my_form })
def post(self, request, *args, **kwargs):
my_form = MyForm(request.POST, prefix='my_form')
if my_form.is_valid():
## cleaned data
r = Respond.objects.create()
for xmldata in products_xml:
p = Product(
name=xmldata['ProductName'],
description=xmldata['ProductDescription'],
price=xmlData['ProductPrice'],
)
p.respond = r
p.save()
r.product_set.all()
return HttpResponseRedirect(reverse(respond:'result', args=(r.id)))
之後,我想重定向到顯示所有保存響應ID數據的頁面。
在我的情況下,invalid syntax
錯誤與reverse
函數字符串。我閱讀有關它的官方文檔,但我不太瞭解如何工作反轉功能。 我views.py:
def result(request):
all_products = Products.objects.all()
template = get_template("booking/results.html")
context = Context({ 'all_products':all_products })
html = template.render(context)
return HttpResponse(html)
我的urls.py看起來是這樣的:
urlpatterns = patterns('',
url(r'^$', views.MyView.as_view()),
url(r'^(?P<respond_id>[0-9]+)/result/$', name='result'),
)
幫助我明白應該怎麼看起來像URL配置反向功能。謝謝。
只是想指出,'ARGS =(r.id)'會的工作,太。請注意尾部的逗號。 – xyres