Django 1.11 CreateView传递URL参数

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

我正在使用 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 以以下形式打开: form

生成的示例 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、谷歌搜索和尝试许多事情,我相信解决方案涉及 get_form_kwargsget_context_dataform_valid 中的 >views.py 但有可能我只是在尝试解决这个问题时感到困惑。任何帮助我走上正轨的帮助将不胜感激!

最佳答案

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' > 模型,注意时间格式有效。

关于Django 1.11 CreateView传递URL参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46900861/

相关文章:

python - Django - 替换部分 urlfield

python - Django 表单集重复值

python - Django - ManyToManyField 未显示在表单中

python - 如何访问模板中的表单日期字段

python - 在 RedirectView 中添加自定义 http header

javascript - 用于用户登录/注册的 Django 模式 - 表单渲染问题

javascript - 清理日期字段从 ajax 调用返回到 django View

django - 如何将 updateview 与 ForeignKey/OneToOneField 一起使用

python - 我可以更改基于类的 View 的模板搜索行为吗?

Python Django : No module named security