2016-05-03 2 views
-1

Я работаю с моим первым проектом Django, и теперь у меня есть некоторые ошибки, которые я совсем не понимаю! создал 2 формы: один из них работал, а данные из второго не были сохранены в базе данных. Я пытался исправить эту проблему, но теперь они оба не работают, и у меня даже есть одна и та же проблема с одной . мои старые шаблоны могли бы вы сказать мне, что мои ошибки и как я могу исправить ихОшибка Django при визуализации шаблонов. Reverse for 'name' с аргументами '(",)' и аргументы ключевого слова '{}' не найдено

Это часть моего views.py:

def listing(request): 
    users_list = Person.objects.all() 
    paginator = Paginator(users_list, 14) 
    page = request.GET.get('page') 
    try: 
     users = paginator.page(page) 
    except PageNotAnInteger: 
     users = paginator.page(1) 
    except EmptyPage: 
     users = paginator.page(paginator.num_pages) 
    return render(request, 'friends_plans/list.html', {"users": users}) 

def add_wish_list(request): 
    if request.method == 'POST': 
     form = Wish_listForm(request.POST) 
     if form.is_valid(): 
      newform = form.save(commit=False) 
      newform.person = request.user 
      newform.save() 
     else: 
      print form.errors 
    else: 
     form = Wish_listForm() 
    return render(request, 'friends_plans/add_wish_list.html', {'form': form}) 

def add_comment(request, wish_list_id): 
    person = request.user 
    wish_list = get_object_or_404(Wish_list, pk=wish_list_id) 
    if request.method == 'POST': 
     form = Comment_to_wish_listForm(request.POST) 
     if form.is_valid(): 
      newform=form.save(commit=False) 
      newform.person = request.user 
      newform.comment_to = wish_list 
      wish_list.person = person 
      newform.save() 
     else: 
      print form.errors 
    else: 
     form = Comment_to_wish_listForm() 
    context_dict = {'form': form, 'wish_list': wish_list} 
    return render(request, 'friends_plans/add_comment.html', {'context_dict': context_dict}) 

Это мой urls.py:

app_name = 'friends_plans' 
urlpatterns = [ 
url(r'^$', views.index, name='index'), # start page 
url(r'^users/$', views.listing, name='listing'), 
url(r'^(?P<person_id>[0-9]+)/wish_list/$', views.wish_list, name='wish_list'), 
url(r'^(?P<person_id>[0-9]+)/$', views.user, name='user'), 
url(r'^(?P<person_id>[0-9]+)/(?P<day_id>[0-9]+)/$', views.day, name='day'), 
url(r'^add_wish_list/$', views.add_wish_list, name='add_wish_list'), 
url(r'^(?P<wish_list_id>[0-9]+)/comment/$', views.comment, name='comment'), 
url(r'^(?P<wish_list_id>[0-9]+)/comment/add/$', views.add_comment, name='add_comment'), 
] 

Это list.html:

{% extends 'friends_plans/base.html' %} 
{% load staticfiles %} 
    {% block title %} Users {% endblock %} 
    {% block content %} 
     <div id ="left"> 
      <div id="toptitle"> Friends' Plans members:</div> 
      <table class="table"> 
        <thead> 
         <tr> 
         <th>Photo</th> 
         <th>Name</th> 
         <th>Occupation</th> 
         <th>Days</th> 
         <th>Places</th> 
         </tr> 
        </thead> 
        <tbody> 
        {% for person in users %} 
         <tr> 
         <td><span> <img class="small_cat" src={% static 'images/cat3.jpg' %} /> </span></td> 
         <td><a href="{% url 'friends_plans:user' user.pk %}">{{ person.username|upper }}</a></span></td> 
         <td><span>Student at {{ person.place_of_work_or_study}}</span></td> 
         <td>{{person.day_set.all.count}}</td> 
         <td>{{person.wish_list_set.all.count}}</td> 
         </tr> 
        {% endfor %} 
        </tbody> 
        </table> 
      <div class="pagination"> 
       <div id="listing"> 
        <span class="step-links"> 
         {% if users.has_previous %} 
          <a href="?page={{ users.previous_page_number }}">previous</a> 
         {% endif %} 

         <span class="current"> 
          Page {{ users.number }} of {{ users.paginator.num_pages }}. 
         </span> 

         {% if users.has_next %} 
          <a href="?page={{ users.next_page_number }}">next</a> 
         {% endif %} 
        </span> 
       </div> 
      </div> 
     </div> 
    {% endblock %} 

Это add_wish_list.html:

{% extends 'friends_plans/base.html' %} 
{% load staticfiles %} 
{% block content %} 
<h1>Add a wish_list</h1> 
<form method="post" action="/friends_plans:add_wish_list/"> 
    {% csrf_token %} 
    {{form.as_p}} 
    <input type="submit" value="Add wish_list" /> 
</form> 
{% endblock %} 

Это add_comment.html:

{% extends 'friends_plans/base.html' %} 
{% block content %} 

<h1>Add a wish_list</h1> 
<form method="post" action=""> 
    {% csrf_token %} 
    {{form.as_p}} 
    <input type="submit" value="Add comment" /> 
</form> 
{% endblock %} 

Я понимаю, что проблема связанный с URL-адресами, но я не понимаю, что это такое, и почему все было в порядке с list.html прежде чем я не изменил его!

+0

Вы вносили изменения в 'friends_plans/base.html'? –

+3

Вы должны передать действие как '{% url" friends_plans: add_wish_list "%}'. Вам также не нужно передавать вложенный словарь '{'context_dict': context_dict}' просто передать 'context_dict' – Pythonista

+0

Спасибо! Нет, я ничего не менял в файле friends_plans/base.html. –

ответ

2

В списке. Html у вас есть {% url 'friends_plans:user' user.pk %}, но ваша переменная называется person, а не user.

+0

Я думаю, что «пользователь» из «def user» (в views.py). И он работал с user.pk раньше. Я думаю, что проблема находится где-то в «def add_comment» –

+3

Этот комментарий не имеет никакого смысла. Вы не передаете ничего, что называется «пользователь» в шаблон list.html; вы передаете 'users', множественное число, а затем перебираете по ним« для человека в пользователях », поэтому каждый отдельный пользователь называется' person' в этом цикле. –

+0

Я понимаю сейчас, спасибо! –