À mon avis, pour obtenir des paramètres d'URL comme celui-ci:
date=request.GET.get('date','')
Dans mon URL, j'essaie de transmettre les paramètres de cette manière avec la balise de modèle d'URL comme ceci:
<td><a href="{% url 'health:medication-record?date=01/01/2001' action='add' pk=entry.id %}" >Add To Log</a></td>
Le paramètre après le? est évidemment ne fonctionne pas, comment puis-je passer cette valeur de données afin de récupérer avec un get?
J'ai trouvé la réponse ici: Est-il possible de passer des paramètres de requête via la balise de template {Djol%? De Django?
Ajoutez-les simplement à la fin:
<a href="{% url myview %}?office=foobar">
For Django 1.5+
<a href="{% url 'myview' %}?office=foobar">
[Il n'y a rien d'autre à améliorer mais je reçois une erreur stupide lorsque je corrige les ticks du code]
Vous devez d’abord préparer votre URL à accepter le paramètre dans la regex: (urls.py)
url(r'^panel/person/(?P<person_id>[0-9]+)$', 'apps.panel.views.person_form', name='panel_person_form'),
Donc, vous utilisez ceci dans votre modèle:
{% url 'panel_person_form' person_id=item.id %}
Si vous avez plusieurs paramètres, vous pouvez modifier votre expression rationnelle et modifier le modèle à l'aide de ce qui suit:
{% url 'panel_person_form' person_id=item.id group_id=3 %}
Ajoutez simplement l'URL des modèles:
<a href="{% url 'service_data' d.id %}">
...XYZ
</a>
tilisé dans Django 2.
Cela peut être fait en trois étapes simples:
1) Ajouter l'ID d'élément avec la balise url
:
{% for item in post %}
<tr>
<th>{{ item.id }}</th>
<td>{{ item.title }}</td>
<td>{{ item.body }}</td>
<td>
<a href={% url 'edit' id=item.id %}>Edit</a>
<a href={% url 'delete' id=item.id %}>Delete</a>
</td>
</tr>
{% endfor %}
2) Ajouter le chemin à rls.py:
path('edit/<int:id>', views.edit, name='edit')
path('delete/<int:id>', views.delete, name='delete')
) Utilisez l'identifiant sur views.py:
def delete(request, id):
obj = post.objects.get(id=id)
obj.delete()
return redirect('dashboard')
Je ne sais pas si je suis hors du sujet, mais j'ai trouvé une solution pour moi; Vous avez une vue basée sur les classes et vous souhaitez avoir un paramètre get en tant que balise de modèle:
class MyView(DetailView):
model = MyModel
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
ctx['tag_name'] = self.request.GET.get('get_parameter_name', None)
return ctx
Ensuite, vous faites votre demande get /mysite/urlname?get_parameter_name='stuff
.
Dans votre modèle, lorsque vous insérez {{ tag_name }}
, vous aurez accès à la valeur du paramètre get ('stuff'). Si vous avez une URL dans votre modèle qui a également besoin de ce paramètre, vous pouvez le faire.
{% url 'my_url' %}?get_parameter_name={{ tag_name }}"
Vous n'aurez pas à modifier votre configuration d'URL
1: HTML
<tbody>
{% for ticket in tickets %}
<tr>
<td class="ticket_id">{{ticket.id}}</td>
<td class="ticket_eam">{{ticket.eam}}</td>
<td class="ticket_subject">{{ticket.subject}}</td>
<td>{{ticket.zone}}</td>
<td>{{ticket.plaza}}</td>
<td>{{ticket.lane}}</td>
<td>{{ticket.uptime}}</td>
<td>{{ticket.downtime}}</td>
<td><a href="{% url 'ticket_details' ticket_id=ticket.id %}"><button data-toggle="modal" data-target="#modaldemo3" class="value-modal"><i class="icon ion-edit"></a></i></button> <button><i class="fa fa-eye-slash"></i></button>
</tr>
{% endfor %}
</tbody>
Le {% url 'ticket_details'%} est le nom de la fonction dans vos vues.
2: Views.py
def ticket_details(request, ticket_id):
print(ticket_id)
return render(request, ticket.html)
ticket_id est le paramètre que vous obtiendrez de ticket_id = ticket.id
3: URL.py
urlpatterns = [
path('ticket_details/?P<int:ticket_id>/', views.ticket_details, name="ticket_details") ]
/? P - où ticket_id est le nom du groupe et motif correspond à un motif à comparer.