Я относительно новичок в Django, но на прошлой неделе провел бесчисленные часы, изучая, как создавать веб-приложения.Я отскочил от многочисленных учебных пособий, обещающих зарегистрировать пользователя, но все они привели к тому, что мои страницы перестали работать и стали совершенно пустыми и белыми.
Теперь я начинаю все заново, но на этот раз яСделано приложение ПОЛНОСТЬЮ, посвященное входу / выходу пользователя из системы / регистрации.Я наконец-то получил свой логин для работы, но это не приносит мне никакой пользы, так как у меня нет учетных записей пользователей.
Сейчас я просто прошу действительно просто способ сделать для меня страницу регистрации пользователя, на которой он позволяет пользователям создать учетную запись, чтобы просматривать домашнюю страницу и иметь возможность редактировать материалы на ней.Я видел несколько учебных пособий и документацию , и действительно надеюсь, что кто-то может дать мне надежный ответ на этот вопрос.
Заранее спасибо.
Если это помогает, мой код выглядит так: (также стоит упомянуть, что я использую Cloud9 IDE)
views.py
from django.contrib.auth import (
authenticate,
get_user_model,
login,
logout,
)
from django.shortcuts import render
from django.http import HttpResponse,HttpResponseRedirect
from .forms import UserLoginForm
# Create your views here.
def login_view(request):
title = "Login"
form = UserLoginForm(request.POST or None)
if form.is_valid():
username = form.cleaned_data.get("username")
password = form.cleaned_data.get('password')
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
# or any other success page
# return HttpResponse("Logged in")
return HttpResponseRedirect('accounts/home')
return render(request, "accounts/form.html", {"form":form, "title": title})
forms.py
from django import forms
from django.contrib.auth import (
authenticate,
get_user_model,
login,
logout,
)
User = get_user_model()
class UserLoginForm(forms.Form):
username = forms.CharField()
password = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = User
fields = ('username', 'email', 'password')
def clean(self,*args,**kwargs):
username = self.cleaned_data.get("username")
password = self.cleaned_data.get("password")
user = authenticate(username=username,password=password)
if not user:
raise forms.ValidationError("This user does not exist")
if not user.check_password(password):
raise forms.ValidationError("Incorrect Password")
if not user.is_active:
raise forms.ValidationError("This user is no longer active.")
return super(UserLoginForm, self).clean(*args,**kwargs)
form.html (в настоящее время используется для входа в систему, открыт для использования того же формата для регистрации)
{% extends 'accounts/base.html' %}
{% block main_content %}
<div class="container">
<div class='col-sm-6 col-sm-offset-3'>
<h1>{{ title }}</h1>
<form method='POST' action='' enctype='multipart/form-data'>{% csrf_token %}
{{ form }}
<input type='submit' class='btn btn-primary btn-block' value='{{ title }}' />
</form>
</div>
</div>
{% endblock %}
(примечание, я знаю, что это не так)Это часть того, о чем я в первую очередь спрашиваю, но моя страница входа не похожа на ту, которую я хочу, как на этой странице входа в систему начальной загрузки прямо здесь https://getbootstrap.com/docs/4.0/examples/sign-in/. Это как это выглядит правильносейчас
Если вы можете помочь мне с этим, это будет означать мир для меня . Спасибо. Также, если вы думаете, что это потому, что я не ссылался на CSSВот как выглядит мой базовый шаблон и моя структура:
{% load staticfiles %}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Accounts</title>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="{% static 'accounts/signin.css' %}" />
</head>
<body>
<div class="jumbotron">
<div class="container">
{% block main_content %}
{% endblock %}
</div>
</div>
</body>
</html>
Как выглядит моя платформа
Искренне ценю любого, кто читал это далеко.