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

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

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

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

605閲覧

python 変数をまとめたい。

django

総合スコア19

Django

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/08/15 08:04

編集2019/08/15 09:17

現状

私はdjangoを使用しています。
その中でURLで取得し、モデルから取得した変数を

user = User.objects.get(username=self.kwargs.get('username'))

get_context_data(self,**kwargs)とget_queryset(self)の両者で使用したいです。
そこでこの変数を一度だけ定義し、userと書くだけで使えるようにしたいです。

クラス変数などを試してみましたがURLから取得がうまく行かなかったりと出来ませんでした。

コード

view.py

python

1class Mypage(generic.ListView): 2 template_name = 'accounts/mypage.html' 3 4 def get_context_data(self, **kwargs): 5 context = super().get_context_data(**kwargs) 6 try: 7 user = User.objects.get(username=self.kwargs.get('username')) 8 return user 9 except User.DoesNotExist: 10 return HttpResponseBadRequest() 11 12 context['username'] = user 13 try: 14 group = belong.objects.get(user=user).group 15 except belong.DoesNotExist: 16 return HttpResponseBadRequest() 17 18 context['count'] = URC.objects.filter(user=user).count() 19 context['group'] = group 20 return context 21 22 def get_queryset(self): 23 return URC.objects.filter(user=)

追記

以下のようにするとエラーが出てしまい
selfが使えないと思っています。

python

1class Mypage(generic.ListView,): 2 template_name = 'accounts/mypage.html' 3 user = User.objects.get(username=self.kwargs.get('username')) 4
SyntaxError: invalid syntax

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

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

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

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

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

meg_

2019/08/15 08:13

クラス変数を試したときは何がどう上手く行かなかったのでしょうか?
guest

回答1

0

ベストアンサー

クラス変数で宣言して、関数で初期化してはどうでしょうか?

【追記】簡単なクラスの例

Python

1class ClassName: 2 str = "example" 3 4a = ClassName() 5a.str 6>>"example"

各ClassNameクラスのインスタンスから、strにアクセスできます。

質問文の中でクラス変数の初期化でエラーが出た旨書かれていたため、初期化に問題があるのかと思いましたがコード自体書き方がおかしいような気がします。
上記の書き方でuserの初期化をやってみてエラーが出るか確認してください。

投稿2019/08/15 09:19

編集2019/08/15 11:05
meg_

総合スコア10577

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

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

django

2019/08/15 10:20

どのように書くのか教えていただいても良いですか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問