gpt4 book ai didi

django - 将参数传递给 Django CreateView

转载 作者:行者123 更新时间:2023-12-04 09:40:15 27 4
gpt4 key购买 nike

我正在尝试实现一个预约应用程序,用户可以在其中创建与预先存在的类相关联的 session 。我想要做的是使用 django CreateView 创建一个 session ,而不要求用户提供关联的类,同时在后台为 session 分配一个类。我试图通过在 url 中传递类的 pk 来做到这一点,以便我可以在 CreateView 中查找类并将类分配给 session 。

我无法弄清楚的是如何做到这一点。我猜在模板中我想要像 <a href="{% url create_sessions %}?class={{ object.pk }}>Create Session</a> 这样的东西在该类的 DetailView 中,以及包含该行的 urls.py 文件中的 urlurl(r'^create-sessions?class=(\d+)/$', CreateSessionsView.as_view(), name = 'create_sessions') ,但我对 django 还很陌生,并不完全了解此参数发送到我的 CBV 的位置以及如何使用它。

我将类(class)保存到 session 的计划是通过覆盖 form_valid在我的 CBV 中:
def form_valid(self, form):
form.instance.event = event
return super(CreateSessionsView, self).form_valid(form)

如果这明显不正确,也请告诉我。

谢谢!

最佳答案

GET 参数(在 ? 之后的那些)不是 URL 的一部分,并且在 urls.py 中不匹配:您可以从 request.GET 中获得它字典。但是最好将该参数作为 URL 本身的一部分,因此它的格式为“/create-sessions/1/”。

所以 urlconf 将是:

url(r'^create-sessions/(?P<class>\d+)/$', CreateSessionsView.as_view(), name='create_sessions')

链接现在可以是:
<a href="{% url create_sessions class=object.pk %}">Create Session</a>

现在在 form_valid 中,您可以执行以下操作:
event = Event.objects.get(pk=self.kwargs['class'])

关于django - 将参数传递给 Django CreateView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26407863/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com