Django : передача параметра или контекста с помощью функции redirect и id, закодированного хэшидами
Я новичок и мне нужна ваша помощь! Но, возможно, это сложный вопрос даже для экспертов, кто знает!
Следующий код прекрасно работает для создания таблицы (с использованием формы datepicker для выбора дня таблицы) с домашней страницы, и с ID страницы, закодированной хэшидами в URL, он перенаправляет на URL таблицы, созданной для выбранного дня. Например, когда конкретная таблица создается для определенного дня, выбранного пользователем, страница перенаправляется на http://127.0.0.1:8000/O3GWpmbk5ezJn4KR, где "O3GWpmbk5ezJn4KR" - это один id таблицы, закодированный с помощью hashids, это работает нормально.
Однако я хотел бы передать переменную с redirect(), день, выбранный в datepicker, используемом для создания таблицы, чтобы отобразить дату на html-странице, созданной с помощью таблицы.
Я попробовал использовать обратную функцию для передачи дневной переменной с редиректом, но это не удалось из-за того, что URL в хешированном виде не был распознан обратной функцией (пример сообщения об ошибке, полученного в шелле: django.urls.exceptions.NoReverseMatch: Reverse for '/VvJ4openRe7Az1XP' not found. '/VvJ4openRe7Az1XP' не является действительной функцией представления или именем шаблона.)
У вас есть идеи, чтобы помочь? Буду признателен за любую подсказку !
Заранее спасибо и наилучшие пожелания.
Вот код :
forms.py
class DateInput(forms.DateInput):
input_type = 'date'
class CreateNewSchedule(forms.ModelForm):
class Meta:
model = Table
fields = '__all__'
widgets = { 'day': DateInput()
}
Models.py :
class Table(models.Model):
day = models.DateField()
def __str__(self):
return self.day
urls.py
urlpatterns = [
path('', views.home, name="home"),
path("home/", views.home, name="home"),
path("index/", views.index, name="index"),
path("<str:id>", views.schedule, name="schedule"),
]
views.py
def home(response):
if response.method == "POST":
form = CreateNewSchedule(response.POST)
if response.POST.get("create"):
if form.is_valid():
n = form.cleaned_data["day"]
t, created = Table.objects.get_or_create(day=n)
return redirect("/%s" %hashids.encode(t.id))
else:
return render(response, "main/home.html", {"form":form})
else:
form = CreateNewSchedule()
return render(response, "main/home.html", {"form":form})