【问题标题】:Django view variables based on urlDjango基于url查看变量
【发布时间】:2014-06-06 18:17:41
【问题描述】:

我刚开始使用 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 来获取这个事件。

由于我不是以英语为母语的人,我不了解文档的某些部分,因此我不确定如何执行此操作。

【问题讨论】:

  • 这是基本的 Django 功能,是每个站点的基础,在本教程中有完整的解释。你到底有什么不明白的?
  • @DanielRoseman 在不同的地方出了点问题,所以我认为我做错了什么,所以我在这里问了。答案起初不起作用,但后来我发现了问题并修复了它。老实说......马丁给出的答案对我来说非常清楚,并且比教程提供了更多帮助

标签: django url view model


【解决方案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>

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

【讨论】:

  • 谢谢!我需要改变一些其他的东西才能让它工作(一些东西肯定需要改变),这就是为什么我花了这么长时间才回答的原因。非常清晰实用!
【解决方案2】:

因此,您的 urls.py 需要设计为除了您的页面名称可能是任何内容的正则表达式。在 Martin 提供的示例中,您还可以使用正则表达式匹配文本而不仅仅是数字。

【讨论】:

    猜你喜欢
    • 2018-02-20
    • 2019-07-15
    • 2012-02-14
    • 2019-04-03
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    相关资源
    最近更新 更多