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

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

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

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

Python 3.x

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

Python

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

Q&A

0回答

959閲覧

[django] htmlで、 自分で定義したtagをforを使って呼びつつ、同時にrequestを引数にしたい

mmmiii

総合スコア4

Django

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

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2019/09/11 00:17

編集2022/01/12 10:55

前提・実現したいこと

formの選択肢を作る際に、
djangoでのhtmlで、
自分で定義したtagをforを使って呼びつつ、同時にrequestを引数にしたい

発生している問題・エラーメッセージ

requestと、forが同時には使えないようです。

TemplateSyntaxError at /diaries/post/ 'for' statements should use the format 'for x in y': for books in render_books request

該当のソースコード

diary.py

python

1 2@register.simple_tag 3def render_books(request): 4 return Book.objects.filter(grouptobook__in =request.user.groups.all()).values_list('id', 'grouptobook__name') 5 6

post.html
formの選択肢の部分です

html

1{% load diary %} 2<div class="field"> 3<label for="id_belong">Bookへの所属:</label> 4<select name="belong" required id="id_belong"> 5{% for books in render_books request %} 6 <option value="{{ books.0 }}">{{ books.1 }}</option> 7{% endfor %} 8</select> 9</div> 10 11

##試したこと1

html

1{% load diary %} 2{% render_books request %}

これで、呼び出したいQuerySetが呼び出せていることは確認できました。
<QuerySet [(1, '1234×default'), (2, '5678×default')]>

##試したこと2

html

1{% load diary %} 2 3<select name="belong" required id="id_belong"> 4 <option value="1">1234×default</option> 5 <option value="2">5678×default</option> 6</select>

このようにforを使わずに入力すると、正常に動作することも確認ずみです。

##試したこと3

html

1{% load diary %} 2 3<select name="belong" required id="id_belong"> 4{% for books in render_books %} 5 <option value="{{ books.0 }}">{{ books.1 }}</option> 6{% endfor %} 7</select>

requestを外すと、エラーは出ませんが、選択肢が何も表示されません。

補足情報(FW/ツールのバージョンなど)

Python 3.7.4
Mac OS Mojave
プログラミング歴3週間で、色々わかっていないので、情報不足等があったら申し訳ありませんがご指摘ください。

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

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

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

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

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

t_obara

2019/09/11 05:29

まずは、モデルのデータをviewに反映する方法を、チュートリアルを元に再度学ばれてはいかがでしょうか。
t_obara

2019/09/11 08:29

render_booksにアクセスした際にhtmlは表示されているのですか? エラーでは「/diaries/post/」となっていて、本問題に関連したソースが提示されているのか疑問なのですが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問