Skip to content

Commit db91825

Browse files
committed
step 2 done
1 parent 37e3f33 commit db91825

File tree

9 files changed

+136
-21
lines changed

9 files changed

+136
-21
lines changed

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ requires-python = ">=3.11"
77
dependencies = [
88
"dj-database-url>=2.3.0",
99
"django>=5.2.1",
10+
"django-bootstrap5>=25.1",
1011
"gunicorn>=23.0.0",
1112
"make>=0.1.6.post2",
1213
"python-dotenv>=1.1.0",

task_manager/settings.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
'django.contrib.messages',
5555
'django.contrib.staticfiles',
5656
'task_manager',
57+
'django_bootstrap5',
5758
]
5859

5960
MIDDLEWARE = [
@@ -71,7 +72,7 @@
7172
TEMPLATES = [
7273
{
7374
'BACKEND': 'django.template.backends.django.DjangoTemplates',
74-
'DIRS': [],
75+
'DIRS': [BASE_DIR / 'templates'],
7576
'APP_DIRS': True,
7677
'OPTIONS': {
7778
'context_processors': [
@@ -125,6 +126,8 @@
125126

126127
USE_I18N = True
127128

129+
USE_L10N = True
130+
128131
USE_TZ = True
129132

130133

task_manager/templates/base.html

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
{% load django_bootstrap5 %}
2+
<!DOCTYPE html>
3+
<html lang="en">
4+
<head>
5+
<meta charset="UTF-8">
6+
<title>{% block title %}My Project{% endblock %}</title>
7+
{% bootstrap_css %}
8+
{% bootstrap_javascript %}
9+
</head>
10+
<body>
11+
<nav class="navbar navbar-expand-lg navbar-light bg-light">
12+
<div class="container-fluid">
13+
<a class="navbar-brand" href="#">MyApp</a>
14+
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
15+
<span class="navbar-toggler-icon"></span>
16+
</button>
17+
<div class="collapse navbar-collapse" id="navbarNav">
18+
<ul class="navbar-nav">
19+
<li class="nav-item">
20+
<a class="nav-link" href="{% url 'login' %}">Вход</a>
21+
</li>
22+
<li class="nav-item">
23+
<a class="nav-link" href="{% url 'register' %}">Регистрация</a>
24+
</li>
25+
<li class="nav-item">
26+
<a class="nav-link" href="{% url 'users' %}">Пользователи</a>
27+
</li>
28+
</ul>
29+
</div>
30+
</div>
31+
</nav>
32+
33+
<div class="container mt-4">
34+
{% block content %}
35+
{% endblock %}
36+
</div>
37+
</body>
38+
</html>

task_manager/templates/index.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{% extends "base.html" %}
2+
3+
{% block title %}Главная{% endblock %}
4+
5+
{% block content %}
6+
<h1>Добро пожаловать на главную страницу!</h1>
7+
<p>Используйте меню для навигации.</p>
8+
{% endblock %}

task_manager/templates/login.html

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<!-- templates/login.html -->
2+
3+
{% extends "base.html" %}
4+
5+
{% block title %}Вход{% endblock %}
6+
7+
{% block content %}
8+
<h2>Вход</h2>
9+
{% if form.errors %}
10+
<p style="color: red;">Неверное имя пользователя или пароль.</p>
11+
{% endif %}
12+
<form method="post">
13+
{% csrf_token %}
14+
<div>
15+
<label for="id_username">Имя пользователя:</label>
16+
{{ form.username }}
17+
</div>
18+
<div>
19+
<label for="id_password">Пароль:</label>
20+
{{ form.password }}
21+
</div>
22+
<button type="submit">Войти</button>
23+
</form>
24+
{% endblock %}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<!-- templates/register.html -->
2+
3+
{% extends "base.html" %}
4+
5+
{% block title %}Регистрация{% endblock %}
6+
7+
{% block content %}
8+
<h2>Регистрация</h2>
9+
<form method="post">
10+
{% csrf_token %}
11+
{{ form.as_p }} <!-- Отображение формы, переданной из представления -->
12+
<button type="submit">Зарегистрироваться</button>
13+
</form>
14+
{% endblock %}

task_manager/urls.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
1+
from django.contrib import admin
12
from django.urls import path
2-
from .views import home
3+
from django.contrib.auth import views as auth_views
4+
from django.views.generic import TemplateView
5+
from .views import users_view, register_view # Импорт функций-представлений
36

47
urlpatterns = [
5-
path('', home, name='home'),
6-
]
8+
path('admin/', admin.site.urls),
9+
path('login/', auth_views.LoginView.as_view(), name='login'),
10+
path('register/', register_view, name='register'), # без .as_view()
11+
path('users/', users_view, name='users'), # без .as_view()
12+
path('', TemplateView.as_view(template_name='index.html'), name='home'),
13+
]

task_manager/views.py

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,24 @@
1-
from django.http import HttpResponse
1+
from django.shortcuts import render
2+
from django.contrib.auth.decorators import login_required
3+
from django.contrib.auth.forms import UserCreationForm
4+
from django.shortcuts import redirect
25

3-
def home(request):
4-
return HttpResponse("Hello, World!")
5-
# Create your views here.
6+
def home_view(request):
7+
return render(request, 'index.html')
8+
9+
def register_view(request):
10+
if request.method == 'POST':
11+
form = UserCreationForm(request.POST)
12+
if form.is_valid():
13+
form.save()
14+
return redirect('login') # После регистрации перенаправляем на вход
15+
else:
16+
form = UserCreationForm()
17+
return render(request, 'register.html', {'form': form})
18+
19+
@login_required
20+
def users_view(request):
21+
# Страница со списком пользователей (требует авторизации)
22+
from django.contrib.auth.models import User
23+
users = User.objects.all()
24+
return render(request, 'users.html', {'users': users})

uv.lock

Lines changed: 14 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)