2014-02-11 25 views
0

我有一个表单以查看产品。为了审查产品,我创建了一个表单,但是当用户提交他的评论时,我希望他保持在同一页面上。Django表单提交并且不更改页面

这是我的网址:

url(r'^(?P<slug>[^/]+)/$', 'reviews.views.single_product'), 

,这是我的形式

<form class = "form-inline" action = "/text/" method="post">{% csrf_token %} 
<strong><h3>Revise este produto</h3></strong><br> 

{% for field in form %} 

<font size = "4"> 

{% if field.field.required %} 
<div class="field-wrapper question-required"> 
{{ field.errors }} 
<span class="asterix"> * </span><label class="label-inline">{{ field.label }}</label> 
{% else %} 
<div class="field-wrapper"> 
{{ field.errors }} 
<label class="form-help-text">{{ field.label }}</label> 
{% endif %} 
<br /> 

<div class=""> 
{{ field }} 
</div> 

</div> 
</li> 
</font> 

{% endfor %} 
<br> 
<button class="btn btn-primary" type="submit" name="submit" value = "Envia Review"><h4>Pronto!</h4></button> 
</form> 

这是呈现页面视图:

def single_product(request, slug): 
    product = get_object_or_404(Product, slug=slug) 
    prod = Product.objects.get(slug=slug) 
    reviews = Review.objects.get(product=prod.id) 
    reviewmatrix = {} 
    i = 0 
    try: 
     for rev in reviews: 
      reviewmatrix[str(i)] = [[review.review_text]] 
      u = User.objects.get(username=rev.user) 
      i = i + 1 
    except: 
     u = User.objects.get(username=reviews.user) 
     reviewmatrix[str(i)] = [[reviews.review_text]] 

    if request.method=="POST": 
     form = responseForm(request.POST, review=review) 
     if form.is_valid(): 
      response = form.save() 
      msg = 'Obrigado por avaliar ' + prod.name 
     return render(request, 'product_detail.html', {'prod':prod, 'reviews':reviews, 'user':u.first_name, 'msg':msg})  
    else:  
     form = ReviewForm()  
     args = {} 
     args.update(csrf(request)) 
    return render(request, 'product_detail.html', {'prod':prod, 'reviews':reviews, 'user':u.first_name, 'form':form}) 
+0

这将在处理表单的视图中完成。 – Rohan

回答

2

你可以做一个HttpResponseRedirect到一旦你处理表单,就会看到相同的视图。您应该能够从表单中的字段中识别出slu slu。

或者,您可以使用action = "."将表单提交到相同的视图,并且可以避免重定向到原始页面。

+0

好吧,我明白了,但没有得到如何实现这一点。你能指定吗?谢谢您的帮助。 –

+0

请发布处理表单的代码,即'/ text /'URL。 – arocks

+0

好的,我已经添加了。请看一下 –