【问题标题】:Django 1.9 : Passing arguments from urls.py to a class viewDjango 1.9:将参数从 urls.py 传递到类视图
【发布时间】:2016-08-08 18:14:27
【问题描述】:

我正在创建一个小型 Web 应用程序作为我的一个小项目来学习 Django 框架。我在 OS X 上使用 1.9.4 版。我正在尝试在 URL 中传递一个字符串,该字符串将发送到基于类的视图,它将根据 URL 返回一个不同的模板。据我所知,(?P) 将允许输入动态文本。 \w 用于字符,写入<name> 会将其作为变量传递。这是正确的配置,还是不是正确的方法?

我担心的原因是 Django 文档使用方法视图,而我使用的是基于类的视图。

urls.py

from django.conf.urls import url
from . import views

app_name = 'xyz'

urlpatterns = [
    url(r'^create/(?P<ty>\w+)$', views.ArticleView.as_view(), name='article-form'),        #.as_view() to turn Class into View
]

views.py

class ArticleCreate(View):

  l = {
    'weapon': WeaponForm,
    'map': MapForm,
    'operator': OperatorForm,
    'gadget': GadgetForm,
    'skin': SkinForm
  }

  ty = ty.lower()

  template_name = 'xyz/create_article_form.html'

  def get(self, request):
    return render(request, self.template_name)

  def post(self, request):
    pass

【问题讨论】:

  • 正确的做法是什么?在您看来,您似乎根本没有对 ty 参数做任何事情,也没有解释您遇到了什么问题。

标签: python django


【解决方案1】:

传递给 url 的参数应该在相关函数内的视图中“捕获”,例如:

def get(self, request, ty):
    ty = ty.lower()
    return render(request, self.template_name)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 2020-06-09
    • 2010-11-24
    • 2013-06-24
    • 2023-04-03
    相关资源
    最近更新 更多