styled login
This commit is contained in:
parent
5b190bc3f3
commit
b48ab419b2
BIN
assets/pasted-20251217-195346-608f0fd1.png
Normal file
BIN
assets/pasted-20251217-195346-608f0fd1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 56 KiB |
BIN
assets/pasted-20251217-200213-f5b1aa31.png
Normal file
BIN
assets/pasted-20251217-200213-f5b1aa31.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 21 KiB |
BIN
assets/pasted-20251217-200627-20278c49.png
Normal file
BIN
assets/pasted-20251217-200627-20278c49.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 45 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,5 +1,6 @@
|
||||
from django import forms
|
||||
from .models import Project, Client
|
||||
from django.contrib.auth.forms import AuthenticationForm
|
||||
|
||||
class ProjectForm(forms.ModelForm):
|
||||
class Meta:
|
||||
@ -21,4 +22,8 @@ class ClientForm(forms.ModelForm):
|
||||
'name': forms.TextInput(attrs={'class': 'form-control'}),
|
||||
'email': forms.EmailInput(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'}))
|
||||
@ -14,38 +14,12 @@
|
||||
<div class="card-body">
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<div class="row">
|
||||
<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>
|
||||
{% for field in form %}
|
||||
<div class="form-floating mb-3">
|
||||
{{ form.status }}
|
||||
<label for="{{ form.status.id_for_label }}">Status</label>
|
||||
{{ field }}
|
||||
<label for="{{ field.id_for_label }}">{{ field.label }}</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
<div class="d-flex justify-content-end">
|
||||
<a href="{% url 'projects' %}" class="btn btn-secondary me-2">Cancel</a>
|
||||
<button type="submit" class="btn btn-primary">Save Project</button>
|
||||
|
||||
@ -18,22 +18,12 @@
|
||||
<h2 class="card-title text-center mb-4">Create Account</h2>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<div class="form-floating mb-3">
|
||||
{{ form.username }}
|
||||
<label for="{{ form.username.id_for_label }}">Username</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>
|
||||
{% for field in form %}
|
||||
<div class="form-floating mb-3">
|
||||
{{ field }}
|
||||
<label for="{{ field.id_for_label }}">{{ field.label }}</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
<div class="d-grid">
|
||||
<button type="submit" class="btn btn-primary btn-lg">Register</button>
|
||||
</div>
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
from django.urls import path
|
||||
from .views import index, add_project, register, edit_project, delete_project, projects, clients, add_client
|
||||
from django.contrib.auth.views import LoginView, LogoutView
|
||||
from .views import index, add_project, register, edit_project, delete_project, projects, clients, add_client, CustomLoginView
|
||||
from django.contrib.auth.views import LogoutView
|
||||
|
||||
urlpatterns = [
|
||||
path('', index, name='index'),
|
||||
@ -9,7 +9,7 @@ urlpatterns = [
|
||||
path('clients/add/', add_client, name='add_client'),
|
||||
path('add-project/', add_project, name='add_project'),
|
||||
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('edit-project/<int:project_id>/', edit_project, name='edit_project'),
|
||||
path('delete-project/<int:project_id>/', delete_project, name='delete_project'),
|
||||
|
||||
@ -4,7 +4,11 @@ from django.contrib.auth.decorators import login_required
|
||||
from django.contrib.auth.forms import UserCreationForm
|
||||
from django.contrib.auth.views import LoginView, LogoutView
|
||||
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):
|
||||
if request.user.is_authenticated:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user