- Base Directory: Alle stier i projektet er bygget oven på denne base.
- Locale Paths: Benyttes til internationalisering og lokalisering.
- Secret Key: Udsættes ikke, da den trækkes fra en miljøvariabel.
- Debug Mode: Aktiveret (
True
), bør ikke bruges i produktion. - Login URL: "login" er URL'en, der håndterer login.
sendsms.unord.dk
- CSRF Trusted Origins:
https://sendsms.unord.dk
- Standard Django-apps som
admin
,auth
, osv. rest_framework
til REST API.- Tredjeparts-apps:
bootstrap_datepicker_plus
til datovælger.
- Egne apps:
sms_app
,pages_app
,authenticate_app
.
- Standard Django-middleware til sikkerhed, sessionhåndtering, osv.
- PostgreSQL er databasemotoren.
- Konfiguration udsættes ikke, da den trækkes fra miljøvariabler.
- Sprogkode:
da
- Tidszone:
Europe/Copenhagen
- SignIn View: Benytter
SignUpForm
til at håndtere brugeroprettelse. - EditProfile View: Benytter
EditProfileForm
til at håndtere profilredigering. - ChangePassword View: Benytter
ChangePasswordForm
til at håndtere ændring af adgangskode.
Projektet anvender følgende Python-biblioteker, som er angivet i requirements.txt
:
- Django==4.1.5: Hovedrammeverket for webapplikationen.
- django-extensions==3.2.1: Udvidelser til Django for at forbedre udviklingsprocessen.
- djangorestframework==3.14.0: Bruges til at oprette RESTful API'er med Django.
- django-bootstrap-datepicker-plus==5.0.3: Implementerer en datovælger komponent med Bootstrap.
- numpy==1.24.1: Matematikbibliotek, anvendt for numeriske operationer.
- openpyxl==3.0.10: Bruges til at læse fra og skrive til Excel-filer.
- python-decouple==3.7: Håndterer miljøvariabler og konfiguration separat fra koden.
- psycopg2-binary==2.9.5: PostgreSQL database adapter for Python.
- pandas==1.5.2: Dataanalysebibliotek, ofte brugt for data manipulation.
- requests==2.28.2: Bruges til at sende HTTP-anmodninger.
- xlrd==2.0.1: Bruges til at læse data fra ældre Excel-filer.
For at installere alle de nødvendige pakker, kør følgende kommando i din terminal:
pip install -r requirements.txt
Dette Django-projekt kaldet sms_app
bruges til at sende, modtage og administrere SMS-beskeder. Det gør brug af Django's indbyggede generic views og har også brugeradgangskontrol via login_required
dekoratører.
models.py
: Indeholder Django modeller somMessage
ogRecipient
.views.py
: Indeholder logik til at håndtere HTTP-anmodninger.forms.py
: Definerer Django formularer til brugerinput.unord_mail.py
ogunord_sms.py
: Håndterer henholdsvis mail og SMS-funktionaliteter.
- MessageListView: Viser en liste over meddelelser.
- MessageCreateView: Opretter en ny meddelelse.
- MessageDetailView: Viser detaljer om en enkelt meddelelse, herunder modtagere.
- MessageUpdateView: Tillader redigering af en eksisterende meddelelse.
- MessageDeleteView: Sletter en meddelelse.
- approve_sms: Godkender en meddelelse til afsendelse.
- reject_sms: Afviser og sletter en meddelelse.
- import_data: Importerer modtagerdata fra en Excel-fil.
-
Django Views: Vi bruger
@method_decorator(login_required, name='dispatch')
for at sikre, at kun logget ind brugere kan få adgang til visse views. -
Pandas: Bruges til at behandle Excel-filer.
-
Email & SMS Integration:
unord_mail
ogunord_sms
filerne indeholder logik for afsendelse af e-mails og SMS'er. -
Model Fields:
Message
model inkluderer etuser
felt, der er en CharField. Det er tilknyttet brugeren, der opretter meddelelsen.
id
: Primærnøgle, autogenereretemail
: E-mailadresse,CharField
message
: Beskeden der skal sendes,CharField
link_code
: En tilfældig genereret kode til at godkende beskeden,CharField
time_to_send
: Tidspunktet, hvor beskeden skal sendes,DateTimeField
user
: Bruger, der oprettede beskeden,ForeignKey til User model
Relation: One-to-Many til Recipient
via message_id
id
: Primærnøgle, autogenereretmessage
: Foreign key tilMessage
model,ForeignKey
mobile_number
: Mobilnummer for modtager,CharField
first_name
: Fornavn på modtager,CharField
last_name
: Efternavn på modtager,CharField
- Clone repositoriet.
- Installer afhængigheder med
pip install -r requirements.txt
. - Kør
python manage.py migrate
for at initialisere databasen. - Kør
python manage.py runserver
for at starte udviklingsserveren.
-
Hvorfor ser jeg en "Fil fejl" i
import_data
metoden?- Dette kan ske, hvis Excel-filen har tomme rækker eller kolonner.
-
Hvad gør
letters_to_numbers
funktionen?- Den konverterer en bogstavkolonnebetegnelse til et kolonnenummer (f.eks., "A" bliver til 1, "Z" til 26). Det bruges så pandas nemer kan finde den rette celle.