Джанго: вызовы views.py с аргументом - PullRequest
0 голосов
/ 12 ноября 2011

Привет Stackoverflow люди,

Я использую пакет Userena для своего сайта регистрации пользователей. Пакет позволяет изменить шаблон или класс формы во время вызова функции views.py "def profile_edit" (если я правильно понял).

Полный заголовок функции просмотра:

def profile_edit(request, username, edit_profile_form=EditUserProfileForm,
             template_name='userena/profile_form.html', success_url=None,
             extra_context=None):

Демонстрационный проект вызывает функцию представления в шаблоне через urls.py с оператором

{% url userena_profile_edit user.username %}

Когда я пытаюсь изменить параметр формы, например, с помощью

{% url userena_profile_edit user.username edit_profile_form=EditUserProfileForm %}

Я получаю следующую ошибку, которая не имеет смысла для меня:

Caught ValueError while rendering: Don't mix *args and **kwargs in call to reverse()!

Я также пытался указать диктат kwargs, но он также не работал.

{% url userena_profile_edit user.username kwargs={'edit_profile_form':EditUserProfileForm} %}

Как я могу правильно вызвать функцию? Я запутался, почему последнее утверждение не сработало.

Спасибо за помощь!

Ответы [ 2 ]

2 голосов
/ 12 ноября 2011

Это потому, что вы смешиваете арги и кварги. Вы не можете сделать это при обратном вызове. user.username - это аргумент, попробуйте использовать его как kwarg:

{% url userena_profile_edit username=user.username edit_profile_form=EditUserProfileForm %}
0 голосов
/ 12 ноября 2011

как насчет того, чтобы сделать имя пользователя kwarg?

{% url userena_profile_edit username=user.username edit_profile_form=EditUserProfileForm %}
...