質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

811閲覧

djangoのGenericViewでuser agnetを取得し、結果によってtemplateを変えたい

increment-P

総合スコア16

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/06/09 05:09

django 3.1.7
Python 3.8.5

表題のとおりなのですが、、、

python

1class CreateExcertion(CreateView): 2 model =Excretion 3 form_class =ExcretionForm 4 success_url = "/" 5 6 template_name = 'excretion_create.html' 7 8 9 def get_context_data(self, **kwargs): 10 context = super().get_context_data(**kwargs) 11 context['js_additional'] ={ 12 'js/search_user_form.js' 13 } 14 context['css_additional'] ={ 15 'css/search_user_form.css' 16 } 17 return context 18 19""" 20# ↓このようにしたいが出来ない 21 def get(self, request, **kwargs): 22 user_agent = get_user_agent(request) 23 if user_agent.is_mobile: 24 template_name = 'phone_excretion_create.html' 25 else: 26 template_name = 'excretion_create.html' 27"""

getメソッドでないとrequestは取得できないのでget()をオーバーライドするのかなと思ったのですが、、、
"The view excretion.views.CreateExcertion didn't return an HttpResponse object. It returned None instead."
となり、うまくできそうにありません。

ご指示お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

template_nameによる単体指定よりちょっと複雑なことをしたい場合だと、
get_template_namesの方をオーバーライドさせられたと思います。

python

1class CreateExcertion(CreateView): 2 model = Excretion 3 form_class = ExcretionForm 4 success_url = "/" 5 6 # template_name = 'excretion_create.html' 7 8 def get_template_names(self): 9 user_agent = get_user_agent(self.request) 10 if user_agent.is_mobile: 11 return ['phone_excretion_create.html'] 12 else: 13 return ['excretion_create.html']

DJangoドキュメント

投稿2021/06/11 05:57

attakei

総合スコア2740

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

increment-P

2021/06/11 06:14

お返事ありがとうございます。 https://pypi.org/project/django-user-agents/ ↑上記のミドルウェアにてtemplate内で分ける方法をみつけたのですが、、、 ご指示頂いた方法がベストです。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問