Django: передача значений объекта модели через URL - PullRequest
0 голосов
/ 15 декабря 2010

У меня проблемы с передачей значений объекта модели через шаблон URL. URL:

url(r'^cities/(?P<city>\w+)/$', 'city_firm', name='city_firm'),

В шаблоне (со страницы индекса) у меня есть:

<a href="{% url city_firm city %}">{{ city }}</a>

Это цикл for.

Связанное представление:

def city_firm(request, city):
    city1 = Cities.objects.get(city=city)
    cityf = city1.Firms.all()
    return render_to_response('cityfirm.html', {'cityf': cityf})

Две модели (Cities, Firms) находятся во многих отношениях. Я продолжаю получать TemplateSyntaxError по индексу (NoReverseMatch while rendering: Reverse for 'city_firm' with arguments '(<Cities: >,)' and keyword arguments '{}' not found). В теге ссылки шаблона я пробовал: {% url city_firm city=city %}, {% url city_firm city=cities.city %}. Ничего не изменилось. Часть urlconf кажется правильной. Проблема, кажется, в шаблоне. Возможно, есть проблема со строковыми значениями объекта, поскольку они не на английском языке. Но я принял несколько мер предосторожности, чтобы предотвратить это. Возможно, что-то не так с представлением, но в сообщении об ошибке указано шаблон Есть идеи?

Решение
Спасибо всем! Наконец я понял это. Проблема была проста: я пытался посылать имена атрибутов объекта через URL, в котором были не английские символы и пробелы. Чтобы это исправить, мне пришлось редактировать свои модели.

Ответы [ 2 ]

2 голосов
/ 15 декабря 2010

Проблема в том, что вы не можете передать объект в URL, вы можете только передавать символы.Таким образом, вам нужно поместить часть объекта city, содержащую текст, который вы хотите видеть в URL - в вашем случае это, кажется, атрибут, также называемый city, который вы используете для поискачтобы получить объект в поле зрения.Так и должно быть:

<a href="{% url city_firm city.city %}">{{ city }}</a>
0 голосов
/ 15 декабря 2010

Я не думаю, что name означает то, что, по вашему мнению, оно делает - удалите это и прочитайте это: http://docs.djangoproject.com/en/dev/topics/http/urls/#naming-url-patterns

Что касается ошибки ... NoReverseMatch говорит вам, что этоне вижу никаких аргументов.Помните, что несуществующие переменные шаблона расширяются до "".Убедитесь, что city находится в контексте, когда вы запускаете этот код - возможно, опубликуйте for в шаблоне?

...