Как передать значения в определенный шаблон из views.py в Django-python - PullRequest
0 голосов
/ 23 марта 2012

У меня есть такая модель:

class EventTypeCategory(models.Model):
    name = models.CharField(max_length=50, verbose_name="Name")
    user = models.ForeignKey(User, verbose_name="User")
    Message_slug = models.SlugField(blank=True, verbose_name="Message")

       def __unicode__(self):
           return self.name

В urls.py:

url(r'^categ/$',
    'eventcateg_detail', name='eventcateg_detail'),

В views.py:

def eventcateg_detail(request,event_categ_id=None, event_categ_slug=None):

Я хочу добавить / отредактировать / удалить (CRUD) выше определенного значения, т.е. name и Message_slug по уровню шаблона. Я не получаю подсказок, как связать url.py с views.py и каким должно быть определение функции eventcateg_detail. Как эта функция будет передавать значения в шаблон (имя шаблона будет category.html)

Я новичок в Джанго :) нужна твоя помощь

Ответы [ 3 ]

3 голосов
/ 23 марта 2012

Необходимо разрешить URL-адресу принимать параметры, чтобы вы могли указать, какую категорию событий вы хотите просмотреть:

/categ/outdoor-events/
/categ/catered-events/ 
...

Сделайте это, вы используете именованный шаблон URL в своей схеме URL:

url(r'^categ/(?P<slug>[-\w]+)/$','eventcateg_detail', name='eventcateg_detail'),

и по вашему мнению:

from django.shortcuts import get_object_or_404, render
def eventcateg_detail(request,slug):
    return render(request, "categ.html", {
        'obj' : get_object_or_404(EventCateg, Message_slug =slug) # You should change Message_slug to just slug
    })

и в вашем шаблоне:

<h1>{{ obj.name }}</h1>

Таким образом, когда пользователь вводит URL, как мы обрисовали выше, он сопоставляется с нашим шаблоном URL, и часть URL-адреса (catered-events) передается в качестве параметра нашему представлению.

2 голосов
/ 23 марта 2012

Лучше, если вы вначале будете следовать учебному пособию по Django, все это там описано. См., Например, часть 3 руководства для получения дополнительной информации о том, как связать urls.py с views.py, а part 4 обсуждает передачу переменных в шаблон.

0 голосов
/ 23 марта 2012

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

Как отмечалось в комментариях, я ошибался, полагая, что дополнительные параметры могут быть переданы в виде динамических URL (т. Е. URL, обозначенных так url(r'^polls/(?P<poll_id>\d+)/$', 'polls.views.detail'),. См. Эту ссылку и ответ @pastylegs.

Django Admin позволит вам отредактировать все поля модели, если это то, что вам нужно. Инструкции по его настройке можно найти в документации Django.

Однако я думаю, что вы спрашиваете, как включить редактирование CRUD через Интернет для пользователей, которые не являются пользователями уровня администратора. В этом случае у вас есть много вариантов. Одним из таких вариантов является использование готового фреймворка для Django, например поршень . Другой способ - использовать универсальных представлений

.

Другим вариантом является создание собственных представлений, позволяющих выполнять операции с вашей моделью. В этом случае вам доступен весь Django. Вы можете передавать параметры в свои пользовательские функции в httprequest, например, в виде данных POST.

...