【问题标题】:django is it possible to access data stored in forms?django 是否可以访问存储在表单中的数据?
【发布时间】:2016-05-22 13:28:49
【问题描述】:

我正在使用 django-cms。我有自己的产品模型,它具有属性

page = models.ManyToManyField(Page, verbose_name=_('Page'), related_name="products")

Page 是 django-cms 类。在管理界面中,我可以添加具有字段 Slug 的新页面。现在在class Page 中没有现场蛞蝓。

那个 slug 字段在 forms.py 中

slug = forms.CharField(label=_("Slug"), widget=forms.TextInput())

是否可以在代码中访问该字段?

【问题讨论】:

  • 一旦在表单中声明了一个字段,您仍然可以通过访问cleaned_data['formField'] 在您的视图中使用它。一旦您可以访问cleaned_data,您就可以对它们做任何您想做的事情(将它们保存到一个模型或多个模型等......取决于您的用例)
  • 如果这是我的情况,那么是的。但我需要在我的自定义中间件中获取这些数据。这发生在页面渲染之前,所以我无法从 clean_data 中获取它。
  • 你的自定义中间件类仍然有请求对象,你只需要覆盖docs.djangoproject.com/en/1.9/topics/http/middleware/…或其他方法。
  • 是的,我有这个功能process_request(request)。但是当我在产品详细信息页面中时,我使此功能起作用:if match and match.url_name == 'product_detail':。所以我无法从此页面获取发布数据。管理界面地址:127.0.0.1:8000/en/admin/cms/page/46
  • 每个中间件可以有自己的process_request。

标签: python django django-cms


【解决方案1】:

愚蠢的错误。 django-cmsclass Page其实有功能:

def get_slug(self, language=None, fallback=True, version_id=None, force_reload=False):

在我的自定义中间件中,只需调用该函数并解决它。

【讨论】:

    猜你喜欢
    • 2012-08-02
    • 2022-11-26
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 2023-01-23
    • 2015-06-11
    • 2013-02-24
    相关资源
    最近更新 更多