как отобразить сообщение выбросить HTML-страницу, если я ввожу повторяющиеся значения бросить HTML-страницу, пока сообщение об ошибке не отображается - PullRequest
1 голос
/ 05 июня 2019

Если я отправляю значения, значения которых сохраняются в базе данных, в случае дублирования значений отображается сообщение, что значения не могут дублироваться путем рендеринга html-страницы. В моем случае значения сохраняются в базе данных, но при вводе любых повторяющихся значений выбрасываетсяошибка.как отобразить сообщение, если ввести какие-либо повторяющиеся значения.есть ли метод метода в файле views.py

1062, "Duplicate entry 'django_post' for key 'title'"

Здесь код models.py

 class Post(models.Model):
     title= models.CharField(max_length=100, unique=True)
     content= models.TextField()

файл view.py

def createpost(request):
   if request.method == 'POST':
       if request.POST.get('title') and request.POST.get('content'):
            post = Post()
            post.title = request.POST.get('title')
            post.content = request.POST.get('content')
            post.save()

       return render(request, 'emp.html')

emp.html файл

<html lang="en">
<head>
<title>Create a Post </title>
</head>

<body>
<h1>Create a Post </h1>
<form action=" " method="POST">
{% csrf_token %}
Title: <input type="text" name="title"/><br/>
Content: <br/>
<textarea cols="35" rows="8" name="content">
</textarea><br/>
<input type="submit" value="Post"/>
</form>
</body>

</html>

Вот html-файл, который я хочу предоставить html-странице после публикации данных через html-страницу

duplicate.html file

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>Duplicate values are entered</h1>

</body>
</html>

Ответы [ 3 ]

0 голосов
/ 05 июня 2019

Вы должны изменить HTML-страницу:

Замените ваш код:

return render(request, 'emp.html')

Кому:

return render(request, 'inserted.html')

или

добавить инструкцию возврата внутри:

 if request.POST.get('title') and request.POST.get('content'):
    ......

    return render(request, 'inserted.html')

models.py

class Post(models.Model):
     title= models.CharField(max_length=100, unique=True)
     content= models.TextField()

Поскольку вы определяете, title должен быть уникальным, поэтому вам нужно обработать дублирующееся исключение и отобразить сообщение об ошибке на стороне пользовательского интерфейса.

view.py

введите свой почтовый индекс для сохранения внутри try, кроме блока, например:

try:
    post = Post()
    post.title = request.POST.get('title')
    post.content = request.POST.get('content')
    post.save()
except IntegrityError as e:
    # add your error message

эта ссылка поможет вам добавить и отобразить сообщение об ошибке.

0 голосов
/ 05 июня 2019

используйте строку ниже, чтобы перенаправить на любой адрес, который вам нравится,

return HttpResponseRedirect("https://www.another-url.com")

вам необходимо импортировать from django.http import HttpResponseRedirect

0 голосов
/ 05 июня 2019

Вы можете отобразить inserted.html после успешного сохранения данных в базе данных.Для этого вы можете изменить ваше представление createpost как:

def createpost(request):
   if request.method == 'POST':
       if request.POST.get('title') and request.POST.get('content'):
            post = Post()
            post.title = request.POST.get('title')
            post.content = request.POST.get('content')
            post.save()
            return render(request, 'inserted.html')

       return render(request, 'emp.html')
...