styled login

This commit is contained in:
Flatlogic Bot 2025-12-17 20:08:10 +00:00
parent 5b190bc3f3
commit b48ab419b2
11 changed files with 24 additions and 51 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

View File

@ -1,5 +1,6 @@
from django import forms from django import forms
from .models import Project, Client from .models import Project, Client
from django.contrib.auth.forms import AuthenticationForm
class ProjectForm(forms.ModelForm): class ProjectForm(forms.ModelForm):
class Meta: class Meta:
@ -22,3 +23,7 @@ class ClientForm(forms.ModelForm):
'email': forms.EmailInput(attrs={'class': 'form-control'}), 'email': forms.EmailInput(attrs={'class': 'form-control'}),
'phone': forms.TextInput(attrs={'class': 'form-control'}), 'phone': forms.TextInput(attrs={'class': 'form-control'}),
} }
class LoginForm(AuthenticationForm):
username = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Username'}))
password = forms.CharField(widget=forms.PasswordInput(attrs={'class': 'form-control', 'placeholder': 'Password'}))

View File

@ -14,38 +14,12 @@
<div class="card-body"> <div class="card-body">
<form method="post"> <form method="post">
{% csrf_token %} {% csrf_token %}
<div class="row"> {% for field in form %}
<div class="col-md-6 mb-3">
<div class="form-floating">
{{ form.name }}
<label for="{{ form.name.id_for_label }}">Project Name</label>
</div>
</div>
<div class="col-md-6 mb-3">
<div class="form-floating">
{{ form.client }}
<label for="{{ form.client.id_for_label }}">Client</label>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<div class="form-floating">
{{ form.start_date }}
<label for="{{ form.start_date.id_for_label }}">Start Date</label>
</div>
</div>
<div class="col-md-6 mb-3">
<div class="form-floating">
{{ form.end_date }}
<label for="{{ form.end_date.id_for_label }}">End Date</label>
</div>
</div>
</div>
<div class="form-floating mb-3"> <div class="form-floating mb-3">
{{ form.status }} {{ field }}
<label for="{{ form.status.id_for_label }}">Status</label> <label for="{{ field.id_for_label }}">{{ field.label }}</label>
</div> </div>
{% endfor %}
<div class="d-flex justify-content-end"> <div class="d-flex justify-content-end">
<a href="{% url 'projects' %}" class="btn btn-secondary me-2">Cancel</a> <a href="{% url 'projects' %}" class="btn btn-secondary me-2">Cancel</a>
<button type="submit" class="btn btn-primary">Save Project</button> <button type="submit" class="btn btn-primary">Save Project</button>

View File

@ -18,22 +18,12 @@
<h2 class="card-title text-center mb-4">Create Account</h2> <h2 class="card-title text-center mb-4">Create Account</h2>
<form method="post"> <form method="post">
{% csrf_token %} {% csrf_token %}
{% for field in form %}
<div class="form-floating mb-3"> <div class="form-floating mb-3">
{{ form.username }} {{ field }}
<label for="{{ form.username.id_for_label }}">Username</label> <label for="{{ field.id_for_label }}">{{ field.label }}</label>
</div>
<div class="form-floating mb-3">
{{ form.email }}
<label for="{{ form.email.id_for_label }}">Email</label>
</div>
<div class="form-floating mb-3">
{{ form.password }}
<label for="{{ form.password.id_for_label }}">Password</label>
</div>
<div class="form-floating mb-3">
{{ form.password2 }}
<label for="{{ form.password2.id_for_label }}">Confirm Password</label>
</div> </div>
{% endfor %}
<div class="d-grid"> <div class="d-grid">
<button type="submit" class="btn btn-primary btn-lg">Register</button> <button type="submit" class="btn btn-primary btn-lg">Register</button>
</div> </div>

View File

@ -1,6 +1,6 @@
from django.urls import path from django.urls import path
from .views import index, add_project, register, edit_project, delete_project, projects, clients, add_client from .views import index, add_project, register, edit_project, delete_project, projects, clients, add_client, CustomLoginView
from django.contrib.auth.views import LoginView, LogoutView from django.contrib.auth.views import LogoutView
urlpatterns = [ urlpatterns = [
path('', index, name='index'), path('', index, name='index'),
@ -9,7 +9,7 @@ urlpatterns = [
path('clients/add/', add_client, name='add_client'), path('clients/add/', add_client, name='add_client'),
path('add-project/', add_project, name='add_project'), path('add-project/', add_project, name='add_project'),
path('register/', register, name='register'), path('register/', register, name='register'),
path('login/', LoginView.as_view(template_name='core/login.html'), name='login'), path('login/', CustomLoginView.as_view(), name='login'),
path('logout/', LogoutView.as_view(), name='logout'), path('logout/', LogoutView.as_view(), name='logout'),
path('edit-project/<int:project_id>/', edit_project, name='edit_project'), path('edit-project/<int:project_id>/', edit_project, name='edit_project'),
path('delete-project/<int:project_id>/', delete_project, name='delete_project'), path('delete-project/<int:project_id>/', delete_project, name='delete_project'),

View File

@ -4,7 +4,11 @@ from django.contrib.auth.decorators import login_required
from django.contrib.auth.forms import UserCreationForm from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.views import LoginView, LogoutView from django.contrib.auth.views import LoginView, LogoutView
from .models import Project, Client from .models import Project, Client
from .forms import ProjectForm, ClientForm from .forms import ProjectForm, ClientForm, LoginForm
class CustomLoginView(LoginView):
form_class = LoginForm
template_name = 'core/login.html'
def index(request): def index(request):
if request.user.is_authenticated: if request.user.is_authenticated: