我刚刚开始使用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来获取此事件。
我不知道如何做到这一点,因为我不理解文档的某些部分,因为我不是母语为英语的人。
答案 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提供的示例中,您还可以使用正则表达式匹配文本而不仅仅是数字。