Django ビューで作成されたコードの html チャンクを表示しようとしているときに問題が発生しました。これが何が起こっているかです。
私の見解では、ユーザーのアクションに従って非表示/表示する一連の本の説明をテンプレートに渡そうとしています。これらの説明は、サーバー上の html ファイルに保存されます。
def my_view()
#loop through the list of books, read their corresponding a html file, and parse it to fill in the book details
#code, code, code...
#take the resulting string, append it on books description array, log it and send it to template
logger.debug(books_description["Clockwork orange"])
return render_to_response("my_template.html", {'bd': books_description}, context_thingy)
ここまでは順調ですね。私のログには、html 文字列が正確に表示されます。
<div id="modal_book_name">Clockwork orange</div>
<div id="modal_book_genre">Dystopian fiction</div>
<br>
<div id="modal_book_desc">yadayadayadayada</div>
ここで、HTML コードにコンテンツを配置したくないので、本の説明を次のように JavaScript 変数に読み込みます。
books_description = {};
{% for book, book_desc in bd.items %}
books_description["{{ book }}"] = "{{ book_desc|escapenewline }}"
{% endfor %}
escapenewline は、JavaScript が文字列の内容全体を正しく解釈できるように、すべての行の末尾に \ を置くフィルターです。
最後に、ユーザーが本の説明を確認したい場合、クリックするだけでモーダルが本の説明とともに表示されます。このために私は持っています:
console.log(books_description[book_name]);
$("#modal_info").html(books_description[book_name]);
繰り返しますが、この console.log ではすべて問題ないようです。
<div id="modal_book_name">Clockwork orange</div><div id="modal_book_genre">Dystopian fiction</div><br><div id="modal_book_desc">yadayadayadayada</div>
残念ながら、ページを開くと modal_info div は空です。ブラウザーの開発者ツールを開いて、その div の html を確認すると、次のように表示されます。
<div id="modal_info">
"<div id="modal_book_name">Clockwork orange</div><div id="modal_book_genre">Dystopian fiction</div><br><div id="modal_book_desc">yadayadayadayada</div>"
</div>
問題はそれらの引用符にあります。彼らはどうやってそこに現れたのですか?どうすればそれらを取り除くことができますか? また、そもそもなぜそこに配置されたのですか?
前もって感謝します。ご不明な点がございましたら、お気軽にお問い合わせください。
更新:まあ、結局のところ、modal_info div は空ではなかったことがわかりました..テキストは背景と同じ色だけでした。すみません、それは私の愚かでした。しかし、問題は解決しません。私が見るべき場所:
Clockwork Orange
Dystopian fiction
yadayadayadayada
代わりに、リテラル html が表示されます。
<div id="modal_book_name">Clockwork orange</div><div id="modal_book_genre">Dystopian fiction</div><br><div id="modal_book_desc">yadayadayadayada</div>
parseHTML 関数を使用して、文字列を HTML に解析しようとしました。
var book_desc = $.parseHTML(books_description[book_name]);
$("#modal_info").html(book_desc);
しかし、結果は同じです。ブラウザに文字列をリテラル文字列ではなくhtmlコードとして解釈させる方法