это мой первый вопрос здесь в stackoverflow, я прошу прощения за любые ошибки или плохое объяснение моей проблемы. (Engli sh не является моим родным языком)
Я недавно начал изучать веб-разработку с использованием Django в качестве фреймворка, и я немного заблудился в некоторых темах, я работаю над сайтом, который имеет некоторые параметры: зарегистрировать нового пользователя и войти в систему. Когда пользователь успешно прошел аутентификацию, он может перейти на страницу «профиля», которая разрешена только для аутентифицированных пользователей. На этой странице я пытаюсь реализовать «веб-чат», такой как группа WhatsApp, чтобы пользователи могли отправлять сообщения, а другие пользователи могли видеть его и отвечать, и т. Д. c ... Но правильно, я пытаюсь правильно реализовать список "кто онлайн" на этой странице профиля, чтобы начать все это. Идея проста, какой бы человек ни вошел в систему, его нужно показать в каком-то списке в HTML, я вышлю код, чтобы продемонстрировать идею.
Мой views.py
def sign_in(request):
context = {}
user = request.user
if user.is_authenticated:
return redirect("/profile")
if request.POST:
form = AccountAuthenticationForm(request.POST)
if form.is_valid():
email = request.POST['email']
raw_password = request.POST['password']
user = authenticate(email=email, password=raw_password)
if user:
login(request, user)
return redirect("/profile")
else:
form = AccountAuthenticationForm()
context['signin_form'] = form
return render(request, 'crud/signin.html', context)
My models.py
class MyAccountManage(BaseUserManager):
def create_user(self, email, username, password=None):
if not email:
raise ValueError("Users must have an email adress!")
if not username:
raise ValueError("Users must have an username!")
user = self.model(
email=self.normalize_email(email),
username=username,
)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, username, password):
user = self.create_user(
email=self.normalize_email(email),
username=username,
password =password,
)
user.is_admin = True
user.is_staff = True
user.is_superuser = True
user.save(using=self._db)
return user
class Account(AbstractBaseUser):
email = models.EmailField(verbose_name="email", max_length=60, unique=True)
username = models.CharField(max_length=30, unique=True)
date_joined = models.DateTimeField(verbose_name="date_joined", auto_now_add=True)
last_login = models.DateTimeField(verbose_name="last_login", auto_now=True)
is_admin = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username',]
objects = MyAccountManage()
def __str__(self):
return self.email
def has_perm(self, perm, obj=None):
return self.is_admin
def has_module_perms(self, app_label):
return True
My forms.py
class RegistrationForm(UserCreationForm):
email = forms.EmailField(max_length=60, help_text='Required. Add a valid email adress')
class Meta:
model = Account
fields = ("email", "username", "password1", "password2")
def clean_email(self):
return self.cleaned_data['email'].lower()
class AccountAuthenticationForm(forms.ModelForm):
password = forms.CharField(label='Password', widget=forms.PasswordInput)
class Meta:
model = Account
fields = ('email', 'password')
def clean(self):
if self.is_valid():
email = self.cleaned_data['email']
password = self.cleaned_data['password']
if not authenticate(email=email, password=password):
raise forms.ValidationError("Invalid Login")
К сожалению, Я не могу express 100% того, что я хочу сказать по-английски sh, поэтому я буду стараться изо всех сил учиться у вас, ребята, и я надеюсь, что вы меня понимаете.
Это мой первый опыт работы с фреймворком, HTML, CSS и JS и всем этим, так что я не знаю об этом глубоко, я нахожусь на "правильном пути"? Спасибо! Любой комментарий будет оценен. Если вам нужна дополнительная информация, просто скажите это, и я постараюсь сообщить вам.