Как получить сообщение об ошибке от объекта

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

class Data(models.Model):
name = models.CharField(max_length=100)
body = models.CharField(max_length=1000000)
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)  
other_name = models.CharField(max_length=200)
email = models.EmailField()
profile_image = models.ImageField(blank=True)
city = models.CharField(max_length= 100)
title = models.TextField(null=True, blank=True)
middlename = models.TextField(null=True, blank=True)
adreess = models.TextField(null=True, blank=True)
country = models.TextField(null=True, blank=True)
state = models.TextField(blank=True, verbose_name="Biography (Age, Language, Location...)")
pin = models.IntegerField()
available = models.TextField(null=True, blank=True)
checkings = models.TextField(null=True, blank=True)
savings = models.TextField(null=True, blank=True)
phone_number = models.TextField(null=True, blank=True)
first_his = models.TextField(null=True, blank=True)
second_history =  models.TextField(null=True, blank=True)
third_history = models.TextField(null=True, blank=True)
last_history = models.TextField(null=True, blank=True)
newstate = models.TextField(null=True, blank=True)


def __str__(self):
    return self.first_name 

это мой HTML файл

  <style>
        h5{
          color: red;
        }
      </style>
      {% for message in messages %}
      <h5> {{message}}</h5>
      {% endfor %}
      <form action="portfolio" method="POST" class="row g-3"></form>
      {% csrf_token %}
      
           
        <div class="col-md-12">
            <label for="validationDefault02" class="form-label"></label>
            <input type="text" name = 'pin' class="form-control"    id="validationDefault02" value="" required>
          </div>
        
          <div class="col-12">
            <button class="btn btn-primary" type="submit">Send</button>
          </div>
        </form>

и это мое мнение

@login_required(login_url = 'loginss')

def account(request): form = PortfolioForm() if request.method == 'POST': try: pin = Portfolio.objects.get(foo='bar') except Portfolio.DoesNotExist: pin = None context = {'form' : form} return render(request, 'account.html', context)

Поскольку вы не используете Form.py, вы должны сделать что-то вроде этого:

def account(request):
    form = PortfolioForm()
    context = {'form' : form}
    if request.method == 'POST':
        try:
            pin = Portfolio.objects.get(foo='bar')
        except Portfolio.DoesNotExist:
            pin = None
            context['error'] = 'Pin Not Found
    return render(request, 'account.html', context)
<form action="portfolio" method="POST" class="row g-3"></form>
    {% csrf_token %}


    <div class="col-md-12">
        <label for="validationDefault02" class="form-label"></label>
        <input type="text" name = 'pin' class="form-control"    id="validationDefault02" value="" required>
        {% if error %}
            <span style="color:red">{{error}}</span>
        {% endif %}
    </div>

    <div class="col-12">
        <button class="btn btn-primary" type="submit">Send</button>
    </div>
</form>

Но вместо try/except, просто сделайте .filter().first()

  1. Если он не найден, то будет None, и вы можете использовать это в If
  2. .
  3. Нет потенциальных актуальных ошибок
def account(request):
    form = PortfolioForm()
    context = {'form' : form}
    if request.method == 'POST':
        pin = Portfolio.objects.filter(foo='bar').first()
        if not pin:
            context['error'] = 'Pin Not Found
    return render(request, 'account.html', context)
Вернуться на верх