****** Услышь меня, я знаю, что это довольно долго, и я ненавижу , чтобы звучать так, но я не спал в течение 4 дней, и это частьМой проект готов к школе, поэтому я был бы очень признателен за буквально любой вклад в этот ******
Здравствуйте, я относительно новичок в Django, но, тем не менее, я 'Мы перебираемся из учебника в учебник по YouTube, и документация Django пытается это исправить.Я создал приложение для опросов, а также создавал несколько других приложений, но оба раза, когда я был почти готов, они стали ПОЛНОСТЬЮ пустым белым, и мне пришлось НАЧАТЬ ВСЕ НАД.На данный момент я просто устал от Django, но я готов продолжать, потому что я действительно ненавижу уходить.
В любом случае, это не тот вопрос, о котором идет речь (хотя, если бы вы могли помочь запустить и запустить мои приложения, это было бы здорово! Я поставлю ссылку внизу).
После того, как япоследнее сбой приложения после попытки узнать, как сделать страницу входа.Я запустил еще одно приложение под названием учетные записи, которые были бы ТОЛЬКО посвящены входу / выходу из системы / регистрации.Тем не менее, до сих пор дела шли не очень хорошо.
Я начал с одного урока на youtube, но потом была целая куча ошибок, с которыми я не мог справиться, с которыми пришлось столкнуться.отступы и прочее.Поэтому я запустил свое приложение с другим учебным пособием, которое вот здесь: https://www.youtube.com/watch?v=BIgVhBBm6zI
Я попытался просмотреть мои ошибки (из-за того, что мои поля ввода не отображались) для этого видеои попытался перейти к следующему, который был логикой за страницу входа в систему.Однако я знаю, что была другая ошибка.Теперь сообщения об ошибках не работают, и всякий раз, когда я нажимаю кнопку отправить, ничего не происходит.Страница просто ОСНОВНО обновляется.И я знаю, что у меня недостаточно глубоких возможностей для регистрации, что позволило бы мне действительно войти в систему, но я ожидаю какого-то сообщения об ошибке, сообщающего, что у меня нет учетной записи или чего-то еще.
Для своих полей ввода я пробовал несколько вещей (включая эту запись ), и ничего не работает.Единственное, что удаленно приближается, это либо я вручную добавляю поля в Html (что я знаю, что не должен делать), либо связываю form.html с шаблоном формы, который просто проверяет, помещает ли пользователь что-то в поля или нет(что также не работает).
Вот как выглядит мой код, и если вы все еще читаете это, большое спасибо за то, что вы до сих пор поддерживали меня.(Также обратите внимание, что закомментированные разделы - это вещи, которые я пробовал ранее)
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')
return render(request, "accounts/form.html", {"form":form, "title": title})
# def authentication(request):
# if request.method == 'POST':
# title = "Login"
# form = UserLoginForm(request.POST)
# if form.is_valid():
# cd = form.cleaned_data
# user = authenticate(username=cd['username'],
# password=cd['password'])
# if user is not None:
# if user.is_active:
# login(request, user)
# #return HttpResponse('Authenticated ' \
# # 'successfully')
# return HttpResponseRedirect('accounts/home.html/')
# else:
# return HttpResponse('Disabled account')
# else:
# return HttpResponse('Invalid login')
# else:
# form = UserLoginForm()
# return render(request, 'accounts/form.html', {'form': form})
def register_view(request):
return render(request,"accounts/form.html",{})
def logout_view(request):
return render(request,"accounts/form.html",{})
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">
<h2 class="form-signin-heading">{{ title }}</h2>
<form method='POST' action='' enctype='multipart/form-data' class="form-signin">
{% csrf_token %}
<!--{% include 'accounts/form-template.html' %}-->
<h2 class="h3 mb-3 font-weight-normal">Please sign in</h2>
<label for="username" class="sr-only">Username</label>
<input type="username" id="username" class="form-control" placeholder="Username" required autofocus>
<label for="inputPassword" class="sr-only">Password</label>
<input type="password" id="inputPassword" class="form-control" placeholder="Password" required>
<button class="btn btn-lg btn-primary btn-block" type="submit" value="{{ title }}">Sign In</button>
</form>
</div>
<!--<div class='col-sm-6 col-sm-offset-3'>-->
<!-- <h1>{{ title }}</h1>-->
<!-- <form method='POST' action='' enctype='multipart/form-data'>{% csrf_token %}-->
<!-- <input type='submit' class='btn btn-default' value='{{ title }}' />-->
<!-- </form>-->
<!--</div>-->
{% endblock %}
form-template.html
{% for field in form %}
<div class="form-group">
<div class="col-sm-12">
<span class="text-danger small">{{ field.errors }}</span>
</div>
<label class="control-label col-sm-2">{{ field.label_tag }}</label>
<div class="col-sm-10">{{ field }}</div>
</div>
{% endfor%}
base.html
{% 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>
<link rel="stylesheet" type="text/css" href="{% static 'accounts/bootstrap-3.3.7-dist/css/bootstrap.min.css' %}" />
<link rel="stylesheet" type="text/css" href="{% static 'accounts/signin.css' %}" />
<link rel="stylesheet" type="text/css" href="{% static 'accounts/style.css' %}" />
</head>
<body>
<div class="jumbotron">
<div class="container">
{% block main_content %}
{% endblock %}
</div>
</div>
</body>
</html>
settings.py (маленькийпредварительный просмотр важных битов)
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
INSTALLED_APPS = [
'accounts',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',]
urls.py (для моего сайта, а не приложения)
from django.conf.urls import url, include
from django.contrib import admin
from accounts.views import (login_view, register_view, logout_view)
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/', login_view, name='login'),
# url(r'^login/', authentication, name='authentication'),
]
изображений моего сайта:
Это чтоэто похоже на исправление StackOverflow из поста, о котором я говорил (да, вот и все, а белый квадрат на самом деле кнопка)
Это я вручную добавляю в поля
Это когда я включаю шаблон формы
Как показано, все просто выключено, и я не хочу перезапускать снова, потому что просто не хватает времени, и яЯ провалюсь в классе.
Обновлено База
{% 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>
Новая веб-страница