#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. Спасибо, приятель, на самом деле это было очень просто и работает в этой ситуации. Я действительно ценю это.