Django подключается к таблице базы данных MySQL

#python #mysql #django

#python #mysql #django

Вопрос:

Я пытаюсь создать систему аутентификации без использования системы Django user.authenticate, потому что я хочу создать 2 отдельные системы входа. 1 для отдела ИТ и веб-разработки и еще 1 для обычных пользователей. Итак, я использую ту же базу данных MySQL и Auth_user для своего ИТ-отдела. и я создал приложение accounts, в котором я хочу использовать таблицу accounts_benutzer (пользователи на немецком языке).

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

Мои представления / модели / шаблон похожи:

accounts/models.py:

 class Benutzer(models.Model):
 
regex = RegexValidator(regex=r'^ ?1?d{7,15}$')

    name = models.CharField(max_length=100)
    passwort = models.CharField(max_length=32)
    email = models.EmailField(max_length=254)
....
  

accounts/views.py :

 from django.shortcuts import redirect, render
from django.contrib import messages
from django.contrib.auth.models import User, auth
from .models import Benutzer

def login(request):

    if request.method == 'POST':
        username = request.POST['name']
        passwort = request.POST['passwort']

        if (username == Benutzer.name) and (passwort == Benutzer.passwort):
            return redirect('/')
        else:
            messages.info(request,'Falsche Zugangs Daten!')
            return redirect('/accounts/login')

    else:
        return render(request, 'login.html')
  

login.html:

 {% load static %}
<form action="login" method="post">
        {% csrf_token %}

        <p>Benutzername: <input type="text" name="name" placeholder="Benutzer Name"></p>
        <p>Passwort: <input type="password" name="passwort" placeholder="Passwort"></p>
        <input type="submit" value="Bestaetigen">-<input type="reset" value="Löschen">
    </form>
    <div>
        {% for message in messages %}
        <h3>{{message}}</h3>
        {% endfor %}
  

Я знаю, что не имеет смысла использовать Benutzer.user или Benutzer.passwort, но именно об этом я и спрашиваю. Как я могу сравнить данные, которые я получаю с веб-сайта, с данными в моей таблице MySQL accounts_benutzer, чтобы предоставить пользователю доступ?

Комментарии:

1. Что именно вы подразумеваете под «2 отдельными системами входа»? Я не вижу причин, по которым встроенная система аутентификации django не будет работать для персонала и обычных пользователей. Информация о вашем подключении к базе данных должна храниться в settings.py и позволять вам использовать базу данных.

2. 1) Образовательный опыт 2) Делает что-то из коробки 3) Предоставляет конечному пользователю выбор отдельного персонала и обычных пользователей (лучше чувствовать, когда конечный пользователь может поместить себя в другие категории) (просто капиталистическая мысль), И мое подключение к базе данных работает, я могу поместить новые материалы через сайт администрирования. Я просто хочу выполнить авторизацию без сборки, потому что я хочу 2-й вход для обычных пользователей, и я не хочу, чтобы база данных обычного пользователя смешивалась с моей базой данных администратора.

Ответ №1:

Я думаю, что есть другие способы, но это должно сработать.

 def login(request):

if request.method == 'POST':
    username = request.POST['name']
    passwort = request.POST['passwort']

    B_user = Benutzer.objects.filter(name=username).first()

    if B_user and B_user.passwort == passwort:
        return redirect('/')
    else:
        messages.info(request,'Falsche Zugangs Daten!')
        return redirect('/accounts/login')

else:
    return render(request, 'login.html')
  

Комментарии:

1. Спасибо, приятель, на самом деле это было очень просто и работает в этой ситуации. Я действительно ценю это.