Django 1.9:将urls.py中的参数传递给类视图

时间:2016-04-16 21:05:28

标签: python django

我正在创建一个小型Web应用程序作为我的迷你项目来学习Django框架。我在版本1.9.4 OS X 上。我试图在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

1 个答案:

答案 0 :(得分:0)

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

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