django url如何使用问号? (基于类的视图)
Posted
技术标签:
【中文标题】django url如何使用问号? (基于类的视图)【英文标题】:django url how to use questions mark? (class based views) 【发布时间】:2018-03-25 12:36:53 【问题描述】:在我的 createview URL 中,我希望有一个“?”,我可以从中将参数传递给 nect 页面。我正在使用基于类的视图。例如:
www.site.com/appname/appointment/add/?Name=1
我的 html 将是:
href=% url 'People:appointment-create' Patient.id %
目前我的网址是这样的:
re_path(r'appointment/add/$', views.appointmentCreate.as_view(), name='appointment-create'),
我的观点是:
class appointmentCreate(LoginRequiredMixin, CreateView):
model = appointment
form_class = AppointmentForm
def get_initial(self):
patient = self.request.GET.get('patient')
return
'Patient': patient,
我该怎么做呢?
【问题讨论】:
【参考方案1】:你可以试试这样的:
href=% url 'People:appointment-create' %?patient_id= Patient.id
(所以只需像往常一样在 url 之后传递查询参数)。
此外,如果您想针对此问题提供更通用的解决方案(从查询参数自动生成表单的初始值),请查看有关 CBV 的文章中的 https://spapas.github.io/#configure-the-form-s-initial-values-from-get-parameters 部分。
【讨论】:
【参考方案2】:下面是基础知识:
首先我想让你知道你刚刚写的下面一行:
% url 'People:appointment-create' Patient.id %
要匹配上面的 url,你需要包含下面的 url:
path(r'appointment/add/<int:patient>', views.appointmentCreate.as_view(), name='appointment-create'),
这是请求参数和 kwargs 之间的区别,在这里您将患者 ID 作为 kwargs 传递并在 self.kwargs
的类基础视图中访问
构造的 url 如下所示:
www.site.com/appname/appointment/add/1/
接下来,如果你想发布请求参数(不需要在你的 urls.py 中添加任何额外的 url),你可以使用如下:
href="% url 'People:appointment-create' %?patient=Patient.id"
请注意,如果您在请求参数中使用名称,则您在此处使用的参数将在视图中可用,那么您需要以self.request.GET.get('name')
访问它,如果您想使用耐心作为请求参数,那么您可以以@987654327 访问它@。
【讨论】:
以上是关于django url如何使用问号? (基于类的视图)的主要内容,如果未能解决你的问题,请参考以下文章
Django - 基于类的通用视图 - “没有要重定向到的 URL”