@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.