2016-04-16 7 views
0

私はDjangoフレームワークを学ぶためのミニプロジェクトとして小さなWebアプリケーションを作成しています。私はにあります。バージョン1.9.4OS Xです。クラスベースのビューに送信されるURLに文字列を渡そうとしていますが、URLに基​​づいて別のテンプレートが返されます。私の知る限り、(?P)を実行すると、動的テキストの入力が可能になります。 \wは文字用で、<name>と書くと、変数として渡されます。これは正しく設定されていますか、これは正しい方法ではありませんか?Django 1.9:urls.pyの引数をクラスビューに渡す

私が心配している理由は、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

正しい方法は何ですか?ビュー内の 'ty'パラメータで何もしていないように見えますし、あなたが経験している問題を説明していないこともあります。 –

答えて

0

URLに渡される引数は内部のビュー内の "catched" する必要があります関連する関数、たとえば:

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