2012-06-21 2 views
0

Я не знаю, как добавить функцию формы views.py в действие атрибута в моем шаблоне. Я бы хотел, чтобы я нажал кнопку, тогда моя страница обновится и добавит комментарий к дате.Django добавить функцию к кнопке в шаблоне

Часть моего шаблона:

<form action = '???' method = "post"> 
    {{ formularz.as_p}} 
    <input type="submit" value="Submit" /> 
</form> 

Parte из views.py

def ShowNewses(request): 
     newses = News.objects.filter(status = 'p') 
     return render_to_response('news.html', {'news_set': newses}) 

def ArchiveNews(request,topic,year, month, day): 
    news = News.objects.filter(date__year = int(year), date__month = int(month), date__day = int(day),topic = topic) 
    comments = Comments.objects.all() 
    formularz = CommentsForm() 
    return render_to_response('knews.html', {'news': news[0],'comments': comments, 'formularz': formularz}) 

def AddComment(request): 
    L = request.META['PATH_INFO'].split('/') 
    if request.POST:  
     k = CommentsForm(request.POST) 
     k.save() 
    return HttpResponseRedirect(reverse('ArchiveNews', kwargs = {'request' = request, 'year' = L[3], 'month' = L[4], 'day' = L[5]})) 

AddComment является функция, которую я хочу в моей кнопки. ArchiveNews индуцируется, когда я выбираю новости, которые будут на новой странице

EDIT часть urls.py

url(r'^news/$', ShowNewses), 
url(r'^news/(?P<topic>.+)/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})', ArchiveNews), 

Я обновил здесь «часть views.py» Я добавил ShowNewses

+0

Вы пробовали именованные URL-адреса, а затем использовали ...

jcfollower

+0

Я пробовал свой путь: action = {% url news.views.AddComment%} Если вы можете посмотреть мою последнюю строку в views.py InvalidSyntax, но я не знаю, где – Tomek

+0

показать нам соответствующие строки в вашем файле urls.py. Кроме того, я не ожидаю увидеть точки в имени URL или «представления». – jcfollower

ответ

1

Вы необходимо добавить AddComment в файл urls.py. Затем, предположив, что ваше приложение называется «myapp», вы использовали его в своем шаблоне: {% url myapp.views.AddComment %}

+0

Я должен создать новое правило в urls.py? Такое же правило, как правило для ArchiveNews? Я хочу, чтобы мои обновления страницы и комментарии добавляются в базу данных. – Tomek

0

Я использовал имя URL-адреса. Мои actualy файлы: views.py

def ArchiveNews(request, topic, year, month, day): 
    print request.POST 
    news = News.objects.filter(date__year = int(year), date__month = int(month), date__day = int(day),topic = topic) 
    comments = Comments.objects.all() 
    formularz = CommentsForm() 
    return render_to_response('knews.html', {'news': news[0], 'comments': comments, 'formularz': formularz, 'topic': topic, 'year': year, 'month': month,'day': day}) 


def AddComment(request,topic,year,month,day): 
    print 'foo' 
    if request.POST: 
     k = CommentsForm(request.POST) 
     k.save() 
    return HttpResponseRedirect(reverse('ArchiveNews', args = (topic,year,month,day))) 

И часть моего шаблона:

<form action = {% url addcomment topic year month day %} method = "post"> 
     {{ formularz.as_p}} 
     <input type="submit" value="Submit" /> 
    </form> 

часть urls.py:

url(r'^news/(?P<topic>.+)/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})', ArchiveNews), 
url(r'^news/(?P<topic>.+)/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})', AddComment, name = 'addcomment'), 

EDIT: Я обновил мои файлы

+0

Ваш url для AddComment полон параметров, но ваше представление AddComment не принимает никаких. Они должны соответствовать. – jcfollower

+0

Я изменил его AddComment (запрос, тема, год, месяц, день): .... , но у меня такая же ошибка – Tomek

+0

Теперь, если вы хотите сохранить все эти аргументы, вам необходимо передать их шаблон и включить их в свой тег {% url ...%} – jcfollower

Смежные вопросы