Compare commits
2 commits
049201eb12
...
456837aa45
Author | SHA1 | Date | |
---|---|---|---|
456837aa45 | |||
a86535257b |
23 changed files with 569 additions and 0 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -162,3 +162,5 @@ cython_debug/
|
||||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||||
#.idea/
|
#.idea/
|
||||||
|
|
||||||
|
settings.py
|
||||||
|
public
|
||||||
|
|
0
mainsite/__init__.py
Normal file
0
mainsite/__init__.py
Normal file
3
mainsite/admin.py
Normal file
3
mainsite/admin.py
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
from django.contrib import admin
|
||||||
|
|
||||||
|
# Register your models here.
|
6
mainsite/apps.py
Normal file
6
mainsite/apps.py
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class MainsiteConfig(AppConfig):
|
||||||
|
default_auto_field = 'django.db.models.BigAutoField'
|
||||||
|
name = 'mainsite'
|
0
mainsite/migrations/__init__.py
Normal file
0
mainsite/migrations/__init__.py
Normal file
3
mainsite/models.py
Normal file
3
mainsite/models.py
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
# Create your models here.
|
10
mainsite/scss/Makefile
Normal file
10
mainsite/scss/Makefile
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
STYLES=style.scss
|
||||||
|
IMPORTS=$(shell ls -1 _*.scss)
|
||||||
|
OUTDIR=../static/css
|
||||||
|
|
||||||
|
SASS=sassc
|
||||||
|
|
||||||
|
all: $(addprefix $(OUTDIR)/,$(STYLES:.scss=.css))
|
||||||
|
|
||||||
|
$(OUTDIR)/%.css: %.scss $(IMPORTS)
|
||||||
|
$(SASS) "$<" "$@"
|
14
mainsite/scss/_params.scss
Normal file
14
mainsite/scss/_params.scss
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
// vim: tabstop=2 shiftwidth=2 expandtab
|
||||||
|
|
||||||
|
$bg_color: white;
|
||||||
|
$link_color: #07a;
|
||||||
|
$fg_color: #555;
|
||||||
|
$fg_color_light: #555555bb;
|
||||||
|
$head_bg_color: #060033;
|
||||||
|
|
||||||
|
$resp_small: 1350px;
|
||||||
|
$resp_vsmall: 1000px;
|
||||||
|
|
||||||
|
$profile_pic_wid: 350px;
|
||||||
|
$profile_pic_wid_small: 180px;
|
||||||
|
$profile_pic_wid_vsmall: 250px;
|
141
mainsite/scss/style.scss
Normal file
141
mainsite/scss/style.scss
Normal file
|
@ -0,0 +1,141 @@
|
||||||
|
// vim: tabstop=2 shiftwidth=2 expandtab
|
||||||
|
|
||||||
|
@import url('fonts.css');
|
||||||
|
@import 'params';
|
||||||
|
|
||||||
|
html {
|
||||||
|
background-color: $bg_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family:Open Sans,Arial;
|
||||||
|
color:#555;
|
||||||
|
font-size:16px;
|
||||||
|
line-height:1.4;
|
||||||
|
text-align:justify;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
header {
|
||||||
|
background-color: $head_bg_color;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row wrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin: 0;
|
||||||
|
padding: 30px 60px;
|
||||||
|
color: $bg_color;
|
||||||
|
|
||||||
|
@media (max-width: $resp_vsmall) {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title, .whoami {
|
||||||
|
font-size: 1.4em;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
a, a:visited {
|
||||||
|
color: $bg_color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#content {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
@media (max-width: $resp_vsmall) {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
main {
|
||||||
|
margin:2em auto;
|
||||||
|
max-width:800px;
|
||||||
|
padding:1em;
|
||||||
|
flex-basis: 800px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.items {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 100px auto;
|
||||||
|
|
||||||
|
.head {
|
||||||
|
grid-column: 1/span 1;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.phdtitle {
|
||||||
|
font-size: 1.1em;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
a, a:visited {
|
||||||
|
color: $link_color;
|
||||||
|
text-decoration:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa {
|
||||||
|
color:#555
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
margin-left:-10px;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
margin-top: 30px;
|
||||||
|
margin-left:20px;
|
||||||
|
|
||||||
|
.fa {
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#whoami {
|
||||||
|
text-align: right;
|
||||||
|
font-size: 1.2em;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.docsline {
|
||||||
|
list-style: none;
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 30px;
|
||||||
|
font-size: 1.1em;
|
||||||
|
|
||||||
|
li {
|
||||||
|
display: inline-block;
|
||||||
|
|
||||||
|
a {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dl {
|
||||||
|
list-style: none;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 3fr;
|
||||||
|
|
||||||
|
dt {
|
||||||
|
grid-column: 1 / span 1;
|
||||||
|
justify-self: end;
|
||||||
|
text-align: right;
|
||||||
|
margin-right: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
dd {
|
||||||
|
margin-left: 20px;
|
||||||
|
justify-self: start;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.antispam {
|
||||||
|
unicode-bidi: bidi-override;
|
||||||
|
direction: rtl;
|
||||||
|
}
|
105
mainsite/static/css/style.css
Normal file
105
mainsite/static/css/style.css
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
@import url("fonts.css");
|
||||||
|
html {
|
||||||
|
background-color: white; }
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: Open Sans,Arial;
|
||||||
|
color: #555;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 1.4;
|
||||||
|
text-align: justify;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0; }
|
||||||
|
|
||||||
|
header {
|
||||||
|
background-color: #060033;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row wrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin: 0;
|
||||||
|
padding: 30px 60px;
|
||||||
|
color: white; }
|
||||||
|
@media (max-width: 1000px) {
|
||||||
|
header {
|
||||||
|
padding: 20px; } }
|
||||||
|
header .title, header .whoami {
|
||||||
|
font-size: 1.4em;
|
||||||
|
font-weight: bold; }
|
||||||
|
header a, header a:visited {
|
||||||
|
color: white; }
|
||||||
|
|
||||||
|
#content {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between; }
|
||||||
|
@media (max-width: 1000px) {
|
||||||
|
#content {
|
||||||
|
flex-wrap: wrap; } }
|
||||||
|
#content main {
|
||||||
|
margin: 2em auto;
|
||||||
|
max-width: 800px;
|
||||||
|
padding: 1em;
|
||||||
|
flex-basis: 800px; }
|
||||||
|
|
||||||
|
.items {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 100px auto; }
|
||||||
|
.items .head {
|
||||||
|
grid-column: 1/span 1;
|
||||||
|
font-weight: bold; }
|
||||||
|
|
||||||
|
.phdtitle {
|
||||||
|
font-size: 1.1em;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: bold; }
|
||||||
|
|
||||||
|
a, a:visited {
|
||||||
|
color: #07a;
|
||||||
|
text-decoration: none; }
|
||||||
|
|
||||||
|
.fa {
|
||||||
|
color: #555; }
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
margin-left: -10px; }
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
margin-top: 30px;
|
||||||
|
margin-left: 20px; }
|
||||||
|
h2 .fa {
|
||||||
|
margin-right: 10px; }
|
||||||
|
|
||||||
|
#whoami {
|
||||||
|
text-align: right;
|
||||||
|
font-size: 1.2em;
|
||||||
|
font-style: italic; }
|
||||||
|
|
||||||
|
ul.docsline {
|
||||||
|
list-style: none;
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 30px;
|
||||||
|
font-size: 1.1em; }
|
||||||
|
ul.docsline li {
|
||||||
|
display: inline-block; }
|
||||||
|
ul.docsline li a {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0 15px; }
|
||||||
|
|
||||||
|
dl {
|
||||||
|
list-style: none;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 3fr; }
|
||||||
|
dl dt {
|
||||||
|
grid-column: 1 / span 1;
|
||||||
|
justify-self: end;
|
||||||
|
text-align: right;
|
||||||
|
margin-right: 20px;
|
||||||
|
font-weight: bold; }
|
||||||
|
dl dd {
|
||||||
|
margin-left: 20px;
|
||||||
|
justify-self: start;
|
||||||
|
text-align: left; }
|
||||||
|
|
||||||
|
.antispam {
|
||||||
|
unicode-bidi: bidi-override;
|
||||||
|
direction: rtl; }
|
25
mainsite/templates/base.html
Normal file
25
mainsite/templates/base.html
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{% load static %}
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<title>Soutenance de thèse — Théophile Bastian</title>
|
||||||
|
<link rel="stylesheet" href="{% static "css/style.css" %}">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
{% include "navbar.html" %}
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
<main>
|
||||||
|
{% block content %}
|
||||||
|
{% endblock content %}
|
||||||
|
<main>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
2
mainsite/templates/navbar.html
Normal file
2
mainsite/templates/navbar.html
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<div class="title"><a href="/">Théophile Bastian</a></div>
|
||||||
|
<div class="whoami">Soutenance de thèse</div>
|
44
mainsite/templates/phd/home.html
Normal file
44
mainsite/templates/phd/home.html
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
{% load lucide %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1>Soutenance de thèse</h1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Le <b>lundi 9 décembre 2024</b> prochain, je vais soutenir ma thèse de doctorat
|
||||||
|
d'informatique à l'Université Grenoble Alpes, intitulée
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="phdtitle">
|
||||||
|
Étude de performance : identification de bottlenecks par analyse de
|
||||||
|
sensitivité
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>La soutenance sera <b>en anglais</b>, et retransmise en visio (lien
|
||||||
|
prochainement disponible), une partie du jury étant à distance.</p>
|
||||||
|
|
||||||
|
<p>Toute personne qui le souhaite est bienvenue pour y assister !</p>
|
||||||
|
|
||||||
|
<h2>Détails pratiques</h2>
|
||||||
|
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
<dt>{% lucide "calendar" %}</dt>
|
||||||
|
<dd>Lundi 9 décembre 2024</dd>
|
||||||
|
|
||||||
|
<dt>{% lucide "clock" %}</dt>
|
||||||
|
<dd>14h</dd>
|
||||||
|
|
||||||
|
<dt>{% lucide "map-pin" %}</dt>
|
||||||
|
<dd>Salle Séminaire 2, RDC, bâtiment IMAG<br/>
|
||||||
|
Campus universitaire, Université Grenoble Alpes<br/>
|
||||||
|
<a href="https://osm.org/go/0CASk7WTo--?relation=6158280">Voir sur une carte</a></dd>
|
||||||
|
</dd>
|
||||||
|
|
||||||
|
<dt>{% lucide "tram-front" %}</dt>
|
||||||
|
<dd>B/C Gabriel Fauré<br/>
|
||||||
|
C5/C8 Université Bibliothèques</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
|
|
4
mainsite/urls.py
Normal file
4
mainsite/urls.py
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
from django.urls import path
|
||||||
|
from . import views
|
||||||
|
|
||||||
|
urlpatterns = [path("", views.HomeView.as_view(), name="home")]
|
8
mainsite/views.py
Normal file
8
mainsite/views.py
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
from django.shortcuts import render
|
||||||
|
from django.views.generic import TemplateView
|
||||||
|
|
||||||
|
|
||||||
|
class HomeView(TemplateView):
|
||||||
|
"""Home page"""
|
||||||
|
|
||||||
|
template_name = "phd/home.html"
|
22
manage.py
Executable file
22
manage.py
Executable file
|
@ -0,0 +1,22 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
"""Django's command-line utility for administrative tasks."""
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
"""Run administrative tasks."""
|
||||||
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'phd_site.settings')
|
||||||
|
try:
|
||||||
|
from django.core.management import execute_from_command_line
|
||||||
|
except ImportError as exc:
|
||||||
|
raise ImportError(
|
||||||
|
"Couldn't import Django. Are you sure it's installed and "
|
||||||
|
"available on your PYTHONPATH environment variable? Did you "
|
||||||
|
"forget to activate a virtual environment?"
|
||||||
|
) from exc
|
||||||
|
execute_from_command_line(sys.argv)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
0
phd_site/__init__.py
Normal file
0
phd_site/__init__.py
Normal file
16
phd_site/asgi.py
Normal file
16
phd_site/asgi.py
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
"""
|
||||||
|
ASGI config for phd_site project.
|
||||||
|
|
||||||
|
It exposes the ASGI callable as a module-level variable named ``application``.
|
||||||
|
|
||||||
|
For more information on this file, see
|
||||||
|
https://docs.djangoproject.com/en/5.1/howto/deployment/asgi/
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
from django.core.asgi import get_asgi_application
|
||||||
|
|
||||||
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'phd_site.settings')
|
||||||
|
|
||||||
|
application = get_asgi_application()
|
22
phd_site/settings.prod.py
Normal file
22
phd_site/settings.prod.py
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from .settings_base import *
|
||||||
|
|
||||||
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
|
|
||||||
|
SECRET_KEY = "blah" # FIXME
|
||||||
|
DEBUG = True # FIXME
|
||||||
|
ALLOWED_HOSTS = []
|
||||||
|
|
||||||
|
|
||||||
|
# Database
|
||||||
|
# https://docs.djangoproject.com/en/5.1/ref/settings/#databases
|
||||||
|
DATABASES = {
|
||||||
|
"default": {
|
||||||
|
"ENGINE": "django.db.backends.sqlite3",
|
||||||
|
"NAME": BASE_DIR / "db.sqlite3",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PUBLIC_ROOT: Path = Path(__file__).absolute().parent.parent.parent
|
||||||
|
STATIC_ROOT = (PUBLIC_ROOT / "static").as_posix()
|
98
phd_site/settings_base.py
Normal file
98
phd_site/settings_base.py
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
"""
|
||||||
|
Django settings for phd_site project.
|
||||||
|
|
||||||
|
Generated by 'django-admin startproject' using Django 5.1.3.
|
||||||
|
|
||||||
|
For more information on this file, see
|
||||||
|
https://docs.djangoproject.com/en/5.1/topics/settings/
|
||||||
|
|
||||||
|
For the full list of settings and their values, see
|
||||||
|
https://docs.djangoproject.com/en/5.1/ref/settings/
|
||||||
|
"""
|
||||||
|
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
# Application definition
|
||||||
|
|
||||||
|
INSTALLED_APPS = [
|
||||||
|
"django.contrib.admin",
|
||||||
|
"django.contrib.auth",
|
||||||
|
"django.contrib.contenttypes",
|
||||||
|
"django.contrib.sessions",
|
||||||
|
"django.contrib.messages",
|
||||||
|
"django.contrib.staticfiles",
|
||||||
|
"lucide",
|
||||||
|
"mainsite",
|
||||||
|
]
|
||||||
|
|
||||||
|
MIDDLEWARE = [
|
||||||
|
"django.middleware.security.SecurityMiddleware",
|
||||||
|
"django.contrib.sessions.middleware.SessionMiddleware",
|
||||||
|
"django.middleware.common.CommonMiddleware",
|
||||||
|
"django.middleware.csrf.CsrfViewMiddleware",
|
||||||
|
"django.contrib.auth.middleware.AuthenticationMiddleware",
|
||||||
|
"django.contrib.messages.middleware.MessageMiddleware",
|
||||||
|
"django.middleware.clickjacking.XFrameOptionsMiddleware",
|
||||||
|
]
|
||||||
|
|
||||||
|
ROOT_URLCONF = "phd_site.urls"
|
||||||
|
|
||||||
|
TEMPLATES = [
|
||||||
|
{
|
||||||
|
"BACKEND": "django.template.backends.django.DjangoTemplates",
|
||||||
|
"DIRS": [],
|
||||||
|
"APP_DIRS": True,
|
||||||
|
"OPTIONS": {
|
||||||
|
"context_processors": [
|
||||||
|
"django.template.context_processors.debug",
|
||||||
|
"django.template.context_processors.request",
|
||||||
|
"django.contrib.auth.context_processors.auth",
|
||||||
|
"django.contrib.messages.context_processors.messages",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
WSGI_APPLICATION = "phd_site.wsgi.application"
|
||||||
|
|
||||||
|
|
||||||
|
# Password validation
|
||||||
|
# https://docs.djangoproject.com/en/5.1/ref/settings/#auth-password-validators
|
||||||
|
|
||||||
|
AUTH_PASSWORD_VALIDATORS = [
|
||||||
|
{
|
||||||
|
"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
# Internationalization
|
||||||
|
# https://docs.djangoproject.com/en/5.1/topics/i18n/
|
||||||
|
|
||||||
|
LANGUAGE_CODE = "fr-fr"
|
||||||
|
|
||||||
|
TIME_ZONE = "Europe/Paris"
|
||||||
|
|
||||||
|
USE_I18N = True
|
||||||
|
|
||||||
|
USE_TZ = True
|
||||||
|
|
||||||
|
|
||||||
|
# Static files (CSS, JavaScript, Images)
|
||||||
|
# https://docs.djangoproject.com/en/5.1/howto/static-files/
|
||||||
|
STATIC_URL = "static/"
|
||||||
|
|
||||||
|
# Default primary key field type
|
||||||
|
# https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field
|
||||||
|
|
||||||
|
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
26
phd_site/urls.py
Normal file
26
phd_site/urls.py
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
"""
|
||||||
|
URL configuration for phd_site project.
|
||||||
|
|
||||||
|
The `urlpatterns` list routes URLs to views. For more information please see:
|
||||||
|
https://docs.djangoproject.com/en/5.1/topics/http/urls/
|
||||||
|
Examples:
|
||||||
|
Function views
|
||||||
|
1. Add an import: from my_app import views
|
||||||
|
2. Add a URL to urlpatterns: path('', views.home, name='home')
|
||||||
|
Class-based views
|
||||||
|
1. Add an import: from other_app.views import Home
|
||||||
|
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
|
||||||
|
Including another URLconf
|
||||||
|
1. Import the include() function: from django.urls import include, path
|
||||||
|
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
|
||||||
|
"""
|
||||||
|
|
||||||
|
from django.contrib import admin
|
||||||
|
from django.urls import path, include
|
||||||
|
|
||||||
|
import mainsite.urls
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
path("admin/", admin.site.urls),
|
||||||
|
path("", include(mainsite.urls)),
|
||||||
|
]
|
16
phd_site/wsgi.py
Normal file
16
phd_site/wsgi.py
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
"""
|
||||||
|
WSGI config for phd_site project.
|
||||||
|
|
||||||
|
It exposes the WSGI callable as a module-level variable named ``application``.
|
||||||
|
|
||||||
|
For more information on this file, see
|
||||||
|
https://docs.djangoproject.com/en/5.1/howto/deployment/wsgi/
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
from django.core.wsgi import get_wsgi_application
|
||||||
|
|
||||||
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'phd_site.settings')
|
||||||
|
|
||||||
|
application = get_wsgi_application()
|
2
requirements.txt
Normal file
2
requirements.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Django==5.1.*
|
||||||
|
lucide
|
Loading…
Reference in a new issue