2014-02-11 62 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

好的,我已經添加了。請看一下 –