20

時々djangoコードを読むと、いくつかのテンプレートに「将来からURLをロードする」と表示されます。これが何なのかよくわかりませんが、URL と関係があることはわかっています。この読み込み URL from future はいつ、どのように使用されることになっていますか?

4

2 に答える 2

9

これは、1.3 で制定されたタグの変更によるものです。url

urlとへの変更ssi

ほとんどのテンプレート タグでは、引数として定数または変数を渡すことができます。たとえば、次のようになります。

{% extends "base.html" %}

基本テンプレートを定数として指定できますがtempl、値を含むコンテキスト変数がある場合base.html:

{% extends templ %}

も合法です。

しかし、歴史のアクシデントにより、url両者ssiは異なる。これらのタグは、引用符のない 2 番目の構文を使用しますが、引数を定数として解釈します。urlつまり、コンテキスト変数をandssiタグのターゲットとして使用することはできません。

Django 1.3 は、この歴史的な事故を修正するプロセスの開始を示しています。Django 1.3 は新しいテンプレート ライブラリを追加します – – これは、およびテンプレート タグfutureの代替実装を提供します。このライブラリは、最初の引数の処理を他のすべての変数の処理と一致させる動作を実装します。したがって、以下を含む既存のテンプレート:urlssifuture

{% url sample %}

次のものに置き換える必要があります。

{% load url from future %}
{% url 'sample' %}

古い動作を実装するタグは廃止され、Django 1.5 では古い動作が新しい動作に置き換えられます。Django の将来のバージョンとの互換性を確保するには、新しいfutureライブラリと構文を使用するように既存のテンプレートを変更する必要があります。

于 2012-06-26T10:57:04.583 に答える
5

テンプレートに関連する次の顕著な例外のため、これを別の回答に入れます。

django.core.urlresolvers.NoReverseMatchdjango テンプレート (Django バージョン >1.4) パーサー内から例外がスローされた場合は、テンプレート内での使用にすぎない可能性があります{% load url from future %}

この場合、単にurl-tagに渡された URL を引用します。{% url someurl %}となるはずです{% url 'someurl' %}。その方向性を示してくれたIgnacio VAに感謝します。

于 2013-08-01T21:58:48.807 に答える