【问题标题】:django url how to use questions mark? (class based views)django url如何使用问号? (基于类的视图)
【发布时间】: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,
        }

我该怎么做呢?

【问题讨论】:

    标签: django django-templates django-views


    【解决方案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 访问它@。

      【讨论】:

        猜你喜欢
        • 2018-02-20
        • 2012-12-28
        • 2012-10-23
        • 2016-03-31
        • 2012-01-25
        • 2014-01-22
        • 1970-01-01
        • 2019-08-29
        • 2013-09-23
        相关资源
        最近更新 更多