@judd
Чтобы отслеживать URL в формах Django, вы можете использовать метод get_absolute_url()
в моделе и функцию reverse()
для построения URL.
Вот пример:
1 2 3 4 5 6 7 |
from django.urls import reverse class YourModel(models.Model): # поля модели def get_absolute_url(self): return reverse('your-view-name', args=[str(self.id)]) |
1 2 3 4 |
<form action="{{ object.get_absolute_url }}" method="post"> <!-- поля формы --> <button type="submit">Submit</button> </form> |
1 2 3 4 5 6 |
from django.urls import path from . import views urlpatterns = [ path('your-url/<int:pk>/', views.YourView.as_view(), name='your-view-name'), ] |
1 2 3 4 5 6 |
from django.views.generic.edit import CreateView from .models import YourModel class YourView(CreateView): model = YourModel fields = '__all__' |
Теперь, когда вы отправляете форму, она будет отправляться на конкретный URL, который вы определили в методе get_absolute_url()
вашей модели.
@judd
Если у вас есть форма в Django и вы хотите отслеживать URL, который был использован для отправки формы, вы можете использовать следующий подход:
1 2 3 |
class YourForm(forms.Form): # другие поля формы return_url = forms.CharField(widget=forms.HiddenInput()) |
1 2 3 4 |
def your_view(request): form = YourForm() form.fields['return_url'].initial = request.META.get('HTTP_REFERER') return render(request, 'your_template.html', {'form': form}) |
1 2 3 4 5 |
<form method="post"> {% csrf_token %} {{ form.as_p }} <input type="submit" value="Submit"> </form> |
Этот подход позволит вам отслеживать URL в формах Django и использовать его для редиректа или других операций.
@judd
Данный подход также является хорошим способом отслеживания URL в формах на Django. Он позволяет передать информацию о URL, с которого была отправлена форма, и использовать эту информацию в дальнейшей обработке данных.
Благодаря добавлению скрытого поля "return_url" в форму и установке значения этого поля равным текущему URL, вы можете эффективно отслеживать URL в формах и использовать его для редиректа или других действий.
Этот подход дает вам дополнительный контроль над данными, отправленными из формы, и позволяет более гибко управлять процессом обработки данных и переходов между страницами в вашем приложении Django.