Django基于url查看变量

时间:2014-04-22 11:42:05

标签: django url view model

我刚刚开始使用python,所以请耐心等待。

让我们说这是我的模特:

class Event(models.Model):
    name = models.CharField(max_length=100, verbose_name=_('name'))
    location = models.CharField(max_length=200, verbose_name=_('location'))
    start_time = models.DateTimeField(verbose_name=_('start time'))
    end_time = models.DateTimeField(verbose_name=_('end time'))
    sales_start = models.DateField(verbose_name=_('sales start'))
    sales_end = models.DateField(verbose_name=_('sales end'))
    event_active = models.BooleanField(verbose_name=_('event active'))
    price = models.IntegerField(verbose_name=_('price'))
    maximum = models.IntegerField(verbose_name=_('maximum'))
    information = models.CharField(max_length=500, verbose_name=_('information'))
    logo = models.ImageField(verbose_name=_('logo'), blank=True, upload_to='img/%Y/%m/%d')

我想要完成的是制作一个页面并用“事件”中的数据填充它,我想通过从URL获取Id来获取此事件。

我不知道如何做到这一点,因为我不理解文档的某些部分,因为我不是母语为英语的人。

2 个答案:

答案 0 :(得分:1)

我认为这就是你要做的事情:

# urls.py
# note 'event_id' will be passed as argument to 'show_event' view.
url(r'events/(?P<event_id>\d+)/$', 'show_event', name='show_event')


# views.py
def show_event(request, event_id):
    ...
    # this will return a 404 response is case event with given id is not found
    event = get_object_or_404(Event, id=event_id)
    ...
    return render(request, 'template.html', {'event': event})


# template.html
<h1>Welcome to the event {{event.name}}</h1>

您将以这种方式使用网址:yourdomain.com/events/123。 这将从URL中提取123事件ID并呈现template.html在模板上下文中发送正确的事件对象,因此您可以根据需要进行渲染。

答案 1 :(得分:0)

所以你的urls.py需要被设计成除了你的页面名称的正则表达式之外。在Martin提供的示例中,您还可以使用正则表达式匹配文本而不仅仅是数字。