Привет. Всем, у меня есть небольшое тестовое приложение с базовой моделью c с формой, основанной на этой модели:
class PublicNotesPost(models.Model):
noteName = models.CharField(max_length=255)
termsAgreed = models.BooleanField(default=False)
noteData = models.TextField()
def __str__(self):
return self.pk
class Meta:
verbose_name_plural = "Test Note Post Data"
Моя цель - когда я публикую заметку, она перенаправляет зрителя с Dynami c URL, на данный момент я не настроил зрителя просто пустой html файл с тегом H1 только для проверки перенаправления. Однако, что происходит, если Ha sh добавляется в конец URL, и я не могу на всю жизнь понять, почему это так и хотелось бы опубликовать здесь, если кто-то испытал это и понял, как его исправить. ?
http://127.0.0.1:8000/note/ryXVe7tAhC/#
Мои шаблоны URL-адресов выглядят следующим образом:
from django.urls import path
from .import views
urlpatterns = [
path('note/composer/', views.NoteComposer.as_view() ,name="note_composer"),
path('note/<str:shorturl>/', views.ViewNote ,name="noteviewer")
]
Функции просмотра:
from django.shortcuts import render, redirect
from .forms import PostComposerForm
from django.urls import reverse
from django.views import View
import string
import random
# Create your views here.
def short_random_string(N:int) -> str:
return ''.join(random.SystemRandom().choice(string.ascii_uppercase +string.ascii_lowercase+ string.digits) for i in range(N))
class NoteComposer(View):
def get(self, request):
try:
formdata = {
'form': PostComposerForm(),
'navbar_active': 'composer',
'agreedTerms': False
}
return render(request, 'main/composer.html', formdata)
except Exception as ex:
print(ex)
return redirect('/')
def post(self, request):
try:
form = PublicComposerForm(self.request.POST)
if form.is_valid():
shortUrl = short_random_string(10)
return redirect(reverse('noteviewer', kwargs={"shorturl": shortUrl}))
pass
except Exception as ex:
print(ex)
return redirect('/')
def ViewNote(request, shorturl):
try:
return render(request,'main/view_note.html')
except:
return redirect('/')