Es ist schon eine Weile her seit vorheriger Beitrag, aber ich werde fortfahren.
Eigentlich ist die Arbeit selbst ziemlich frei verlaufen und es scheint, dass ich nicht nur gepostet habe, also nehmen wir von diesem Zeitpunkt an eine kleine Menge davon.
Zunächst einmal leicht von der Verarbeitung des Authentifizierungssystems. Implementiert unter Bezugnahme auf Frühere Beiträge, die ich erstellt habe.
owner/views.py
from django.shortcuts import render,redirect
from django.contrib.auth import authenticate,login,logout
from django.contrib.auth.decorators import login_required
def log_in(req):
if req.user.is_authenticated():
return redirect('/') #Wenn Sie authentifiziert sind, leiten Sie zur obersten Seite weiter (diesmal werde ich nicht berühren).
error_msg = "" #Definieren Sie eine Fehlermeldung und bringen Sie sie zur Vorlage
if req.method == 'POST':
posted = req.POST
name,password = posted['name'],posted['password']
user = authenticate(username=name,password=password)
if user is not None:
if user.is_active:
login(req,user)
return redirect('/')
else:
error_msg = "This account is not active..."
else:
error_msg = "Log in failed...."
return render(req,'owner/log_in.html',{'error_msg':error_msg})
def log_out(req):
logout(req)
return redirect('/login/') #Kehren Sie nach dem Abmelden zum Anmeldebildschirm zurück
def new_owner(req): #Eine Seite zum Erstellen eines neuen Benutzers. Ich bin der Besitzer der Schicht
error_msg = ""
if req.method == 'POST':
posted = req.POST
name,password = posted['name'],posted['password']
if password != posted['pass_check']: #Überprüfen Sie Ihr Passwort, indem Sie zweimal eingeben, wie dies häufig der Fall ist
error_msg = "Password check is failed!"
else:
if len(password) < 6: #Das Passwort muss mindestens aus 6 Zeichen bestehen
error_msg = "Password need over 6 letters!"
else:
from django.db import IntegrityError
from django.contrib.auth.models import User
try:
owner = User.objects.create_user(username=name,password=password)
return redirect('/')
except IntegrityError: #Wenn der Benutzername bereits verwendet wird, wird dieser Fehler ausgelöst. Ergreifen Sie daher Maßnahmen
error_msg = "You can not use this name!"
return render(req,'owner/new_owner.html',{'error_msg':error_msg,})
@login_required #Praktischer Dekorateur zum Anmelden (ANMELDEN in den Einstellungen)_Es ist notwendig, die URL festzulegen. Alles was Sie tun müssen, ist Ihre Anmeldeseite unter dieser URL zu platzieren.
def edit_groupschedule(req): #Es fühlt sich an, als würde man die Schichteinstellung festlegen, daher ist es möglicherweise einfacher zu verstehen, ob sie als Schichteinstellung eingestellt ist
from django.contrib.auth.models import Group
from owner.models import GroupSchedule
try: #Wenn der Benutzer, auf den zugegriffen wird, noch keinen Gruppenzeitplan hat, erstellen Sie einen neuen. Wenn er bereits einen hat, bearbeiten Sie ihn.
groupschedule = GroupSchedule.objects.get(owner=req.user)
group = groupschedule.group
except GroupSchedule.DoesNotExist:
groupschedule = GroupSchedule(owner=req.user)
group = Group()
if req.method == 'POST':
posted = req.POST
group.name = posted['name']
group.save()
groupschedule.group = group
groupschedule.start_point = int(posted['start_point'])
groupschedule.save()
return redirect('/') #Nach dem Speichern nach oben springen
return render(req,'owner/edit_groupschedule.html',{
'group_name':group.name,
'start_point':groupschedule.start_point,
'select_choices':(1,5,10,15,20,25,), #Kandidaten für monatliche Schichtstartdaten
})
Als nächstes kommt die Vorlage. Ich verwende Bootstrap, aber es ist etwas ärgerlich, jedes Mal, wenn ich ein Formularteil erstelle, `` <div>
`zu schreiben. Die Teile, die wahrscheinlich wiederholt verwendet werden, sind ** Vorlagen / App ** Erstellen Sie unten ein Verzeichnis mit dem Namen ** Teile **. Danach können Sie es mit dem Template-Tag ** include ** abrufen. Ist das Bild, das ** erweitert, das Fundament und das Teil **?
Zum Beispiel so.
parts/input.html
<div class="form-group">
<label>{{ label }}
<input type="{{ type }}" name="{{ name }}" class="form-control {{ class }}" value="{{ value }}">
</label>
</div>
Der Rest sollte angemessen gemacht werden. Da Sie beim Lesen eines Teils in jede Variable einen Wert eingeben können, können Sie auch Klassen hinzufügen. Da ich auf dieser Grundlage einen Teil für die Anwendung erstellt habe, werde ich ihn außerdem verwenden.
templates/owner/log_in.html
{% extends 'bases/base_form.html' %}
{% block title %}Log in{% endblock %}
{% block form %}
<h1>Log in<small>{{ error_msg }}</small></h1> <!--Meldungsanzeige bei Fehler-->
{% include 'owner/parts/name_input.html' %}
{% include 'owner/parts/pass_input.html' %}
{% include 'parts/submit.html' with class='btn-lg btn-primary' value='Log in!' %} {#Sie können mit with einen Wert in eine Variable einfügen#}
<a href="/owner/new">Create New User</a>
{% endblock form %}
Der Rest ist fast der gleiche.
..../new_user.html
{% extends 'owner/bases/base_form.html' %}
{% block title %}new Owner!{% endblock %}
{% block form %}
<h1>new Owner!<small>{{ error_msg }}</small></h1>
{% include 'owner/parts/name_input.html' %}
{% include 'owner/parts/pass_input.html' %}
{% include 'owner/parts/pass_input2.html' %}
{% include 'parts/submit.html' with value="Create new owner!" %}
{% endblock form %}
..../edit_groupschedule.html
{% extends 'owner/bases/base_form.html' %}
{% block title %}new Schedule!{% endblock %}
{% block form %}
{% include 'owner/parts/name_input.html' with value=group_name %} {#Ursprünglicher Wert. Ansichten.Das Gefühl, die von py mitgebrachten Variablen an die Teile weiterzugeben#}
{% include 'owner/parts/select_number.html' with start_point=start_point select_choices=select_choices %} {#Kandidaten zur Auswahl#}
{% include 'owner/parts/submit.html' with value='Create your Schedule!' %}
{% endblock form %}
Es spielt keine Rolle, ob es keine Rolle spielt, aber als ich ein Leerzeichen ließ, wurde mir klar, wie schwierig es war, meinen Code zu verstehen (einige Klassen- und Funktionsnamen sind nicht sinnvoll). Es ist peinlich, also habe ich nicht so viel Lust zu posten, und wenn ich "OK" denke und alleine weitermache, wird es immer chaotischer. Ich werde bis zu dem Punkt posten, an dem ich es vorerst getan habe, aber ich denke, es wäre besser, es von Grund auf neu zu erstellen.
Recommended Posts