Django - 命令和上下文字典

时间:2016-01-06 04:07:44

标签: python django dictionary

我试图从特定网址获取一个context_dictionary,以便在django命令中使用。没有命令的代码返回带有slug和详细信息的模型到站点,假设它是localhost / event / mainevent /。

一旦我想获得用于该网站的上下文字典,我该如何在我的命令中获取它? 到目前为止,我的代码如下:

  

命令/ MyCommand.py

class Command(BaseCommand):
    help = 'Closes the specified poll for voting'
    def handle(self, *args, **options):
        #Get context processor here
        self.stdout.write(event.title)
  

Models.py

class Event(models.Model):
    title = models.CharField(max_length=255, unique=True)
    location = models.CharField(max_length=300)
    slug = models.SlugField()
    def save(self, *args, **kwargs):
            self.slug = slugify(self.title)
            super(Event, self).save(*args, **kwargs)

    def __unicode__(self):
        return self.title
  

Views.py

def details(request, event_title_slug):
   context_dict = {}
   try:
       event = Event.objects.get(slug=event_title_slug)
       context_dict['event_title'] = event.title
       context_dict['event'] = event
   except Event.DoesNotExist:
       pass
   return render(request, 'event_details.html', context_dict)
  

Urls.py

url(r'^event/(?P<event_title_slug>[\w\-]+)/$', views.details, name='details')

1 个答案:

答案 0 :(得分:1)

我不明白这里的上下文词典是什么意思。视图中的上下文用于呈现模板;你不想在你的命令中这样做。无论如何,您在命令中没有URL,因此与视图没有任何关系。

相反,您需要将一个参数(例如slug)传递给您的命令,并使用它来删除事件。 documentation有一个几乎完全符合你想要的例子。