Извиняюсь, если это просто или моя терминология отключена, это мой первый проект django.Мне не удалось найти подобное решение для этого онлайн.
У меня есть приложение с базой данных postgres, где я аутентифицирую своих пользователей.Я написал приложение в Django для взаимодействия с некоторыми таблицами и отображения информации для пользователя.Я хотел бы использовать Django для входа и отслеживания сеансов пользователей с этой БД.поэтому я могу использовать такие функции, как
{% if user.is_authenticated %}
, но я не хочу использовать команду migrate, поэтому я не хочу изменять существующую БД.Я могу получить доступ к таблице, в которой находится информация об учетной записи, поскольку я создал для нее модель.
Я вижу, что вы можете использовать параметр входа в систему для удаленного пользователя, но я не могу найти образец или руководство по его использованию, и я полностью потерян,
Прямо сейчас я создаю форму входа на странице просмотра.Затем получите имя пользователя и пароль, которые введены, но я не знаю, что делать дальше.Также нужно будет хешировать пароль.Есть ли в djano библиотека, которая сделает это для приложения.
Буду признателен за любые указатели или онлайн-руководства.
Вот представления для входа в систему
if request.method == "POST":
form = LoginForm(request.POST)
if form.is_valid():
email = form.data['account_email']
password = form.data['account_password']
user = authenticate(username=email)
if user.check_password(password):
login(request, user)
return redirect('myapp:cust_select')
else:
# Username and password did not match
raise ValidationError('Invalid Username/Password')
return render(request, 'myapp/login.html', {'form' : form}
backends.py
from django.conf import settings
from django.contrib.auth import get_user_model
class UserAuthBackend(object):
def authenticate(self, username=None, password=None):
try:
account = get_user_model()
user = account.objects.get(account_email=username)
if user:
return user
except account.DoesNotExist:
print "account not found"
return None
def get_user(self, user_id):
try:
account = get_user_model()
return account.objects.get(pk=user_id)
except User.DoesNotExist:
return None
models.py
class Accounts(AbstractUser):
account_id = models.AutoField(primary_key=True)
account_email = models.CharField(max_length=100)
account_password = models.CharField(max_length=20)
def __str__(self):
return self.account_email
class Meta:
managed = False
db_table = 'accounts'
settings.py
AUTHENTICATION_BACKENDS = ( 'myapp.backends.UserAuthBackend', )
Он продолжает выходить с той же ошибкой в запросе sql.столбец account.password не существует. ЛИНИЯ 1: ВЫБЕРИТЕ «account». «password», «accounts». «last_login», «acco ...
. Похоже, он не использует мою модель Account.выберите его из этой таблицы, но как мне заставить его прекратить запрашивать accounts.password
и accounts.last_login
, поскольку их нет в модели y Accounts