Есть ли способ исключить аргументы ключевых слов URL шаблона из определения функции представления?

-2

У меня есть URL-адрес в моем шаблоне, который маршрутизируется следующим образом:

workoutcal/шаблоны/calendar.html:

<a href="{% url 'workoutcal:add' year=table.0 month=table.1 day=element.0 %}" class="add">Add workout</a>

workoutcal/urls.py:

url(r'^add/(?P<year>[0-9]+)/(?P<month>[0-9]+)/(?P<day>[0-9]+)/$', views.add, name = 'add'), #Adding a workout for the date in question. 

workoutcal/views.py:

def add(request,year,month,day):
    return HttpResponse("This is the add page")

Если я заменил add() следующим образом:

def add(request):
    return HttpResponse("This is the add page")

Я получаю сообщение об ошибке:

Traceback (most recent call last):
  File "/Users/sahandzarrinkoub/Documents/Programming/Web/Django/workout/lib/python3.6/site-packages/django/core/handlers/exception.py", line 41, in inner
    response = get_response(request)
  File "/Users/sahandzarrinkoub/Documents/Programming/Web/Django/workout/lib/python3.6/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File 
"/Users/sahandzarrinkoub/Documents/Programming/Web/Django/workout/lib/python3.6/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
TypeError: add() got an unexpected keyword argument 'year'

Значение views.add имеет неожиданный аргумент ключевого слова, отправленный ему. Скажем, что я хочу передать эти аргументы ключевого слова url в calendar.html потому что они необходимы для получения правильного URL-адреса, но я не хочу использовать эти аргументы в своем представлении. Есть ли способ исключить аргументы из определения функции представления без получения этой ошибки?

  • 1
    Я не могу понять, почему вы хотите отправить аргументы в URL, но не использовать их в представлении.
  • 0
    почему у вас есть дата в URL, если вы не используете его ни для чего? это не имеет смысла
Показать ещё 1 комментарий
Теги:

1 ответ

2
Лучший ответ
def add(request,year=None,month=None,day=None):

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

  • 0
    Справедливо, но это не отвечает на мой вопрос.
  • 1
    Вы можете передать их, сохранив их в сеансе, и получить к ним доступ в другом представлении, которое вы хотите, но если у вас есть urlpattern с аргументами, то представление должно иметь эти ключевые слова.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню