【问题标题】:Django 1.11 CreateView pass URL parametersDjango 1.11 CreateView 传递 URL 参数
【发布时间】:2023-03-04 10:31:01
【问题描述】:

我正在使用 Django 1.11,我很难理解如何使用 CreateView 类将 URL 参数传递给 ModelForm。我在 URL 中有 4 个参数(start_date、end_date、start_time、end_time),我试图将它们传递给表单中的相关字段。如果有人能指出正确的方向来解决这个问题,我将不胜感激!

URL 是在我的 html 文件中使用以下函数创建的:

window.location.assign("/calendar/create?start_date="+start.format("YYYY-MM-DD")+"&end_date="+end.format("YYYY-MM-DD")+"start_time="+start.format("h:mm A")+"&end_time="+end.format("h:mm A"));

这从 urls.py 打开:

url(r'^calendar/create',views.CalendarCreate.as_view(),name='calendar_create'),

来自views.py:

class CalendarCreate(CreateView):
    model = Event
    form_class = EventForm

来自forms.py:

class EventForm(ModelForm):

    class Meta:
        model = Event

到目前为止一切顺利,我的 event_form.html 以以下形式打开:

并且生成的示例 URL 是: http://127.0.0.1:8000/calendar/create?start_date=2017-10-25&end_date=2017-10-25start_time=4:00%20PM&end_time=5:00%20PM

这就是我卡住的地方。在 stackoverflow 上呆了几天,在谷歌上搜索,并尝试了很多事情,我相信解决方案涉及 views.py 中的 get_form_kwargsget_context_dataform_valid 但有可能我只是混淆了自己试图解决这个问题.任何能让我走上正轨的帮助都将不胜感激!

【问题讨论】:

  • 您不必做任何事情,CreateView 应该会自动处理它们。你遇到了什么问题?
  • 嗨,塞尔丘克,感谢您的回复。问题是我想将 4 个 URL 参数传递给表单,但表单只是加载了这些字段中没有值。例如,在提供的屏幕截图中,start_date 字段将默认为 25/10/2017,使用示例 URL

标签: django django-forms django-class-based-views


【解决方案1】:
class CalendarCreate(CreateView):
    model = Event
    form_class = EventForm

    def get_initial(self):
        initial = {}
        for x in self.request.GET:
            initial[x] = self.request.GET[x]
        print(initial)
        return initial

注意request.GET 中的'start_date' 必须在Event 模型中具有相同的字段'start_date',并注意时间格式有效。

【讨论】:

  • 非常感谢Ykh!我已经坚持了好几天了。我非常感谢您对我的帮助。使用您的代码,两个日期字段现在可以正确预填充,但时间字段不是。这只是我需要解决的格式问题吗?我注意到 URL 在时间数字和 AM/PM 指示符之间有 %20 的空格。为清楚起见,如果我手动填写表单中的时间字段,我将使用 URL 时间中的示例选择下午 4:00。
  • 确实是格式问题。我将我的 URL 生成更改为:start_time="+start.format("kk:mm") 现在可以使用了。再次感谢您!
  • 这是我的荣幸
猜你喜欢
  • 2014-12-12
  • 1970-01-01
  • 2014-03-22
  • 2021-01-05
  • 1970-01-01
  • 2021-09-12
  • 2018-04-03
  • 2019-09-22
  • 2011-12-19
相关资源
最近更新 更多