Wie erstelle ich ein Django-Reverse / eine Django-URL mit Hilfe von Query-Args?

Ich habe URLs wiehttp: //example.com/depict? smiles = CO & width = 200 & height = 200 (und mit mehreren anderen optionalen Argumenten)

Meine urls.py enthält:

urlpatterns = patterns('',
    (r'^

Ich kann zu dieser URL gehen und das erstellte PNG mit 200 x 200 erhalten, sodass ich weiß, dass dieser Teil funktioniert.

In meiner Vorlage aus der Antwort "cansmi.cansmi" möchte ich eine URL für die benannte Vorlage "cyclops-depict" mit bestimmten Abfrageparametern erstellen. Ich dachte, ich könnte @ t

{% url cyclops-depict smiles = input_smiles width = 200 height = 200%}

where "input_smiles" ist eine Eingabe in die Vorlage über eine Formularübermittlung. In diesem Fall ist es die Zeichenfolge "CO", und ich dachte, es würde eine URL wie die oben angegebene erstellen.

Diese Vorlage schlägt mit einem TemplateSyntaxError fehl:

Beim Rendern eine Ausnahme machen: Umgekehrt für 'Zyklop-Darstellung' mit Argumenten '()' und Schlüsselwortargumenten '{' lächelt ': u'CO', 'Höhe': 200, 'Breite': 200} 'nicht gefunden.

Dies ist eine häufige Fehlermeldung, sowohl hier auf StackOverflow als auch anderswo. In jedem Fall habe ich festgestellt, dass Benutzer sie mit Parametern im URL-Pfad regexp verwendeten. Dies ist nicht der Fall, in dem die Parameter in die Abfrage eingehen.

Das heißt, ich mache es falsch. Wie mache ich es richtig? Das heißt, ich möchte die vollständige URL einschließlich der Pfad- und Abfrageparameter mithilfe eines Elements in der Vorlage erstellen.

Als Referenz

% python manage.py shell
Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.core.urlresolvers import reverse
>>> reverse("cyclops-depict", kwargs=dict())
'/depict'
>>> reverse("cyclops-depict", kwargs=dict(smiles="CO"))
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/Library/Python/2.6/site-packages/django/core/urlresolvers.py", line 356, in reverse
    *args, **kwargs)))
  File "/Library/Python/2.6/site-packages/django/core/urlresolvers.py", line 302, in reverse
    "arguments '%s' not found." % (lookup_view_s, args, kwargs))
NoReverseMatch: Reverse for 'cyclops-depict' with arguments '()' and keyword arguments '{'smiles': 'CO'}' not found.
, 'cansmi.index'), (r'^cansmi

Ich kann zu dieser URL gehen und das erstellte PNG mit 200 x 200 erhalten, sodass ich weiß, dass dieser Teil funktioniert.

In meiner Vorlage aus der Antwort "cansmi.cansmi" möchte ich eine URL für die benannte Vorlage "cyclops-depict" mit bestimmten Abfrageparametern erstellen. Ich dachte, ich könnte @ t

{% url cyclops-depict smiles = input_smiles width = 200 height = 200%}

where "input_smiles" ist eine Eingabe in die Vorlage über eine Formularübermittlung. In diesem Fall ist es die Zeichenfolge "CO", und ich dachte, es würde eine URL wie die oben angegebene erstellen.

Diese Vorlage schlägt mit einem TemplateSyntaxError fehl:

Beim Rendern eine Ausnahme machen: Umgekehrt für 'Zyklop-Darstellung' mit Argumenten '()' und Schlüsselwortargumenten '{' lächelt ': u'CO', 'Höhe': 200, 'Breite': 200} 'nicht gefunden.

Dies ist eine häufige Fehlermeldung, sowohl hier auf StackOverflow als auch anderswo. In jedem Fall habe ich festgestellt, dass Benutzer sie mit Parametern im URL-Pfad regexp verwendeten. Dies ist nicht der Fall, in dem die Parameter in die Abfrage eingehen.

Das heißt, ich mache es falsch. Wie mache ich es richtig? Das heißt, ich möchte die vollständige URL einschließlich der Pfad- und Abfrageparameter mithilfe eines Elements in der Vorlage erstellen.

Als Referenz

% python manage.py shell
Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.core.urlresolvers import reverse
>>> reverse("cyclops-depict", kwargs=dict())
'/depict'
>>> reverse("cyclops-depict", kwargs=dict(smiles="CO"))
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/Library/Python/2.6/site-packages/django/core/urlresolvers.py", line 356, in reverse
    *args, **kwargs)))
  File "/Library/Python/2.6/site-packages/django/core/urlresolvers.py", line 302, in reverse
    "arguments '%s' not found." % (lookup_view_s, args, kwargs))
NoReverseMatch: Reverse for 'cyclops-depict' with arguments '()' and keyword arguments '{'smiles': 'CO'}' not found.
, 'cansmi.cansmi'), url(r'^depict

Ich kann zu dieser URL gehen und das erstellte PNG mit 200 x 200 erhalten, sodass ich weiß, dass dieser Teil funktioniert.

In meiner Vorlage aus der Antwort "cansmi.cansmi" möchte ich eine URL für die benannte Vorlage "cyclops-depict" mit bestimmten Abfrageparametern erstellen. Ich dachte, ich könnte @ t

{% url cyclops-depict smiles = input_smiles width = 200 height = 200%}

where "input_smiles" ist eine Eingabe in die Vorlage über eine Formularübermittlung. In diesem Fall ist es die Zeichenfolge "CO", und ich dachte, es würde eine URL wie die oben angegebene erstellen.

Diese Vorlage schlägt mit einem TemplateSyntaxError fehl:

Beim Rendern eine Ausnahme machen: Umgekehrt für 'Zyklop-Darstellung' mit Argumenten '()' und Schlüsselwortargumenten '{' lächelt ': u'CO', 'Höhe': 200, 'Breite': 200} 'nicht gefunden.

Dies ist eine häufige Fehlermeldung, sowohl hier auf StackOverflow als auch anderswo. In jedem Fall habe ich festgestellt, dass Benutzer sie mit Parametern im URL-Pfad regexp verwendeten. Dies ist nicht der Fall, in dem die Parameter in die Abfrage eingehen.

Das heißt, ich mache es falsch. Wie mache ich es richtig? Das heißt, ich möchte die vollständige URL einschließlich der Pfad- und Abfrageparameter mithilfe eines Elements in der Vorlage erstellen.

Als Referenz

% python manage.py shell
Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.core.urlresolvers import reverse
>>> reverse("cyclops-depict", kwargs=dict())
'/depict'
>>> reverse("cyclops-depict", kwargs=dict(smiles="CO"))
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/Library/Python/2.6/site-packages/django/core/urlresolvers.py", line 356, in reverse
    *args, **kwargs)))
  File "/Library/Python/2.6/site-packages/django/core/urlresolvers.py", line 302, in reverse
    "arguments '%s' not found." % (lookup_view_s, args, kwargs))
NoReverseMatch: Reverse for 'cyclops-depict' with arguments '()' and keyword arguments '{'smiles': 'CO'}' not found.
, cyclops.django.depict, name="cyclops-depict"),

Ich kann zu dieser URL gehen und das erstellte PNG mit 200 x 200 erhalten, sodass ich weiß, dass dieser Teil funktioniert.

In meiner Vorlage aus der Antwort "cansmi.cansmi" möchte ich eine URL für die benannte Vorlage "cyclops-depict" mit bestimmten Abfrageparametern erstellen. Ich dachte, ich könnte @ t

{% url cyclops-depict smiles = input_smiles width = 200 height = 200%}

where "input_smiles" ist eine Eingabe in die Vorlage über eine Formularübermittlung. In diesem Fall ist es die Zeichenfolge "CO", und ich dachte, es würde eine URL wie die oben angegebene erstellen.

Diese Vorlage schlägt mit einem TemplateSyntaxError fehl:

Beim Rendern eine Ausnahme machen: Umgekehrt für 'Zyklop-Darstellung' mit Argumenten '()' und Schlüsselwortargumenten '{' lächelt ': u'CO', 'Höhe': 200, 'Breite': 200} 'nicht gefunden.

Dies ist eine häufige Fehlermeldung, sowohl hier auf StackOverflow als auch anderswo. In jedem Fall habe ich festgestellt, dass Benutzer sie mit Parametern im URL-Pfad regexp verwendeten. Dies ist nicht der Fall, in dem die Parameter in die Abfrage eingehen.

Das heißt, ich mache es falsch. Wie mache ich es richtig? Das heißt, ich möchte die vollständige URL einschließlich der Pfad- und Abfrageparameter mithilfe eines Elements in der Vorlage erstellen.

Als Referenz

% python manage.py shell
Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.core.urlresolvers import reverse
>>> reverse("cyclops-depict", kwargs=dict())
'/depict'
>>> reverse("cyclops-depict", kwargs=dict(smiles="CO"))
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/Library/Python/2.6/site-packages/django/core/urlresolvers.py", line 356, in reverse
    *args, **kwargs)))
  File "/Library/Python/2.6/site-packages/django/core/urlresolvers.py", line 302, in reverse
    "arguments '%s' not found." % (lookup_view_s, args, kwargs))
NoReverseMatch: Reverse for 'cyclops-depict' with arguments '()' and keyword arguments '{'smiles': 'CO'}' not found.

Antworten auf die Frage(12)

Ihre Antwort auf die Frage