1
Django

Dies ist meiner Ansicht nach Funktion: Es dauert eine kwarg dh block_idWie übergebe ich Parameter von meiner Formularaktion an eine Ansicht?

def write_comment(request, block_id): 
    block=get_object_or_404(Block, pk=block_id) 
    if request.method=='POST': 
     form=Comment_form(request.POST) 
     if form.is_valid(): 
      #do stuff 
     else: 
      return render(request,'writers_block/index.html', {'comment_form':form, 'block_form':Block_form()}) 

Um es von meiner Vorlage Form greife ich verwenden:

{%for block in block_list%} 
<form method="post" action="{%url 'write_comment' block_id=block.id%}"> 
{%csrf_token%} 
{{comment_form}} 
<input type="submit" value="submit"> 
</form> 
{%endfor%} 

Irgendwie bin ich immer ein NoReverseMatch sagen bekommen, dass write_comment mit, dass die Argumente nicht gefunden wird:

Die URLPATTERN ist:

url(r'^write_comment', writers_block.views.write_comment, name='write_comment') 

Können Sie mir helfen?

Antwort

2

Können Sie Ihre URL wie dies ändern und versuchen .. url(r'^write_comment/(?P<block_id>\d+)/$', writers_block.views.write_comment, name='write_comment')

+0

Sollte nicht die Zitate die gesamte Regex decken? like (r '^ write_comment/(? P \ d +)/$' oder sollte es nur 'write_comment' bedecken –

+0

Danke, es hat geklappt .. Btw, muss ich immer Parameter über die URL übergeben? Gibt es einen Weg direkt durch Übergeben Sie die Parameter über die Vorlage an die Ansicht? –

+0

Ja, das Zitat sollte bis zu $. Jetzt habe ich richtig bearbeitet. – Adaikalaraj

Verwandte Themen