Skip to content

Commit 1fbea4d

Browse files
committed
step 4 done
1 parent 6ea6735 commit 1fbea4d

File tree

16 files changed

+213
-18
lines changed

16 files changed

+213
-18
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,5 @@
44
hexletcode/__pycache__/
55
task_manager/__pycache__/
66
task_manager/migrations/__pycache__/
7+
static
8+
staticfiles

db.sqlite3

4 KB
Binary file not shown.

hexletcode/urls.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,5 @@
1818
from django.urls import path, include
1919

2020
urlpatterns = [
21-
path('admin/', admin.site.urls),
2221
path('', include('task_manager.urls')),
2322
]

task_manager/forms.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
22
from django.contrib.auth.models import User
33
from django import forms
4+
from .models import Status
45

56
class UserRegisterForm(UserCreationForm):
67
class Meta:
@@ -13,3 +14,8 @@ class UserUpdateForm(UserChangeForm):
1314
class Meta:
1415
model = User
1516
fields = ('username', 'first_name', 'last_name', 'email')
17+
18+
class StatusForm(forms.ModelForm):
19+
class Meta:
20+
model = Status
21+
fields = ['name']
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Generated by Django 5.2.1 on 2025-06-06 12:26
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
initial = True
9+
10+
dependencies = [
11+
]
12+
13+
operations = [
14+
migrations.CreateModel(
15+
name='Status',
16+
fields=[
17+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18+
('name', models.CharField(max_length=100)),
19+
],
20+
),
21+
]

task_manager/models.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,11 @@
1+
from django.db import models
2+
from django.urls import reverse
13

4+
class Status(models.Model):
5+
name = models.CharField(max_length=100)
6+
7+
def __str__(self):
8+
return self.name
9+
10+
def get_absolute_url(self):
11+
return reverse('status-list')

task_manager/settings.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,12 @@
133133

134134
# Static files (CSS, JavaScript, Images)
135135
# https://docs.djangoproject.com/en/5.2/howto/static-files/
136+
STATIC_URL = '/static/'
137+
STATIC_ROOT = BASE_DIR / 'staticfiles' # Путь для собранных статических файлов
138+
STATICFILES_DIRS = [
139+
BASE_DIR / 'static', # Если у вас есть папка 'static' в вашем проекте
140+
]
136141

137-
STATIC_URL = 'static/'
138142

139143
# Default primary key field type
140144
# https://docs.djangoproject.com/en/5.2/ref/settings/#default-auto-field

task_manager/templates/base.html

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,48 @@
1111
<nav class="navbar navbar-expand-lg navbar-light bg-light">
1212
<div class="container-fluid">
1313
<a class="navbar-brand" href="#">Менеджер задач</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">
14+
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
15+
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
1516
<span class="navbar-toggler-icon"></span>
1617
</button>
1718
<div class="collapse navbar-collapse" id="navbarNav">
1819
<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 'user-list' %}">Пользователи</a>
27-
</li>
20+
{% if user.is_authenticated %}
21+
<li class="nav-item">
22+
<a class="nav-link" href="{% url 'user-list' %}">Пользователи</a>
23+
</li>
24+
<li class="nav-item">
25+
<a class="nav-link" href="{% url 'status-list' %}">Статусы</a>
26+
</li>
27+
<li class="nav-item">
28+
<form action="{% url 'logout' %}" method="post" style="display: inline;">
29+
{% csrf_token %}
30+
<button type="submit" class="btn btn-link nav-link">Выход</button>
31+
</form>
32+
</li>
33+
{% else %}
34+
<li class="nav-item">
35+
<a class="nav-link" href="{% url 'login' %}">Вход</a>
36+
</li>
37+
<li class="nav-item">
38+
<a class="nav-link" href="{% url 'register' %}">Регистрация</a>
39+
</li>
40+
{% endif %}
2841
</ul>
2942
</div>
3043
</div>
3144
</nav>
3245

3346
<div class="container mt-4">
47+
{% if messages %}
48+
{% for message in messages %}
49+
<div class="alert alert-{{ message.tags }} alert-dismissible fade show" role="alert">
50+
{{ message }}
51+
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
52+
</div>
53+
{% endfor %}
54+
{% endif %}
55+
3456
{% block content %}
3557
{% endblock %}
3658
</div>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<h1>Удалить статус</h1>
2+
<p>Вы уверены, что хотите удалить статус "{{ object.name }}"?</p>
3+
<form method="post">
4+
{% csrf_token %}
5+
<button type="submit">Удалить</button>
6+
</form>
7+
<a href="{% url 'status-list' %}">Назад</a>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{% extends "base.html" %}
2+
3+
{% block title %}{% if object %}Редактировать статус{% else %}Создать статус{% endif %}{% endblock %}
4+
5+
{% block content %}
6+
<h1>{% if object %}Редактировать{% else %}Создать{% endif %} статус</h1>
7+
8+
<form method="post" novalidate>
9+
{% csrf_token %}
10+
{{ form.as_p }}
11+
<button type="submit" class="btn btn-primary">Сохранить</button>
12+
</form>
13+
<a href="{% url 'status-list' %}" class="btn btn-link mt-3">Назад к списку статусов</a>
14+
{% endblock %}

0 commit comments

Comments
 (0)