From 732639a15ac71e4729e1e4b850bfee4a1ac558a5 Mon Sep 17 00:00:00 2001 From: sascha Date: Tue, 9 Apr 2024 15:18:54 +0000 Subject: [PATCH] django tutorial part 1-3 --- badminton/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 137 bytes .../__pycache__/settings.cpython-310.pyc | Bin 0 -> 2303 bytes badminton/__pycache__/urls.cpython-310.pyc | Bin 0 -> 982 bytes badminton/__pycache__/wsgi.cpython-310.pyc | Bin 0 -> 544 bytes badminton/asgi.py | 16 +++ badminton/settings.py | 124 ++++++++++++++++++ badminton/urls.py | 23 ++++ badminton/wsgi.py | 16 +++ db.sqlite3 | Bin 0 -> 143360 bytes manage.py | 22 ++++ polls/__init__.py | 0 polls/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 133 bytes polls/__pycache__/admin.cpython-310.pyc | Bin 0 -> 248 bytes polls/__pycache__/apps.cpython-310.pyc | Bin 0 -> 410 bytes polls/__pycache__/models.cpython-310.pyc | Bin 0 -> 1257 bytes polls/__pycache__/urls.cpython-310.pyc | Bin 0 -> 446 bytes polls/__pycache__/views.cpython-310.pyc | Bin 0 -> 1058 bytes polls/admin.py | 5 + polls/apps.py | 6 + polls/migrations/0001_initial.py | 32 +++++ polls/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-310.pyc | Bin 0 -> 1002 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 144 bytes polls/models.py | 19 +++ polls/templates/polls/detail.html | 6 + polls/templates/polls/index.html | 9 ++ polls/tests.py | 3 + polls/urls.py | 11 ++ polls/views.py | 19 +++ 30 files changed, 311 insertions(+) create mode 100644 badminton/__init__.py create mode 100644 badminton/__pycache__/__init__.cpython-310.pyc create mode 100644 badminton/__pycache__/settings.cpython-310.pyc create mode 100644 badminton/__pycache__/urls.cpython-310.pyc create mode 100644 badminton/__pycache__/wsgi.cpython-310.pyc create mode 100644 badminton/asgi.py create mode 100644 badminton/settings.py create mode 100644 badminton/urls.py create mode 100644 badminton/wsgi.py create mode 100644 db.sqlite3 create mode 100755 manage.py create mode 100644 polls/__init__.py create mode 100644 polls/__pycache__/__init__.cpython-310.pyc create mode 100644 polls/__pycache__/admin.cpython-310.pyc create mode 100644 polls/__pycache__/apps.cpython-310.pyc create mode 100644 polls/__pycache__/models.cpython-310.pyc create mode 100644 polls/__pycache__/urls.cpython-310.pyc create mode 100644 polls/__pycache__/views.cpython-310.pyc create mode 100644 polls/admin.py create mode 100644 polls/apps.py create mode 100644 polls/migrations/0001_initial.py create mode 100644 polls/migrations/__init__.py create mode 100644 polls/migrations/__pycache__/0001_initial.cpython-310.pyc create mode 100644 polls/migrations/__pycache__/__init__.cpython-310.pyc create mode 100644 polls/models.py create mode 100644 polls/templates/polls/detail.html create mode 100644 polls/templates/polls/index.html create mode 100644 polls/tests.py create mode 100644 polls/urls.py create mode 100644 polls/views.py diff --git a/badminton/__init__.py b/badminton/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/badminton/__pycache__/__init__.cpython-310.pyc b/badminton/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..57d255284e04b55c45855d525f90c126d10e6332 GIT binary patch literal 137 zcmd1j<>g`kf<6ACX(0MBh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o2BpKO;XkRlhi~ xI5{IxKPfRKH#4s!KM#o&AD@|*SrQ+wS5SG2!zMRBr8Fni4rEF(6OdqG001!v9WDR> literal 0 HcmV?d00001 diff --git a/badminton/__pycache__/settings.cpython-310.pyc b/badminton/__pycache__/settings.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ec4f06729367b2c0f374cdb0b1ebdddb7eed951a GIT binary patch literal 2303 zcmb7F%Wm676eVfu5yf&G+j%rW0R};lsEw%@cAKJT)6gRAsL=~1Ww+cA6lWxj!dE!M zIOev$kwu$Df&NH8g4?e816>qF(@RRW1vx-nN*oUF!E?i~izYK4Pqa(H9-+cL-f zp1sUpMR<7zH~j?$#F-r8k>K*4Ug@{T7wy82ce@n#h*n=7b_R&WtryUU@~w*ukKYv?*!1Doq; zJs&sn@dn{XqPdE0n%B`Sa}A=c!@YrSn>Wx$=1p`*=W2Itndi8QIqAjK4Lq#5kz@?&`i zy!Qar3nDBL9|CwbBLEJ6HYN~~xcCudfGcChLi$y`jsl0u(-@~2IDuEkejNboEC`81 z>!&H#r|@iyrD5#4l1nI)g5mj+Y#%`&Od{#E?Z%k?pI8wd&IS4dwwJ5%so1mGIN6=C zKzxdwIKrFbt!Kebw1u9aPuTYO{&?t*cSvY?o5$ba&3I?~UhUrFht|$3XG|uEJ08B7 z7`0MzGYnjp%61r1xtC2Ffj=apWMc|1JAuz4GLUn!ll4Vu44K?r5N0meXY3@zG`Y2) zq?l5m|DwVJg*^g~JBuC+Hq6Pki9)`cGp$Dua`CYpVL4wvVJEVl5do9-nJ(E`1e=AI z=lu1lY|g88F$h$E7x;1`fBc6jjfQdqhC_mn=S-h0(l_Vz#RnGQ66fW_c3wi0$lvcpwuif6)(v#dZ{@53jMCy!|dGn(Cwp4>U7?3j*7 z)=j{4zKv-K;h`P7?5wWQ;G9AF$|VeMClwIR<~1QLYMuRNM@z+y($=Ev@K2sEq@LGK zXj6I|M96}Zg`hl~+^0BFSk|&J!#eSZYiBKSIJF3(V}@KG&{NhA`n2S=xL?hRMnPtq#S7J z@j`<(%J7T`aSdM4_L^DzaG`cfrsnVrq0-|pOyFA?DPXDhbL+IYalvy@l*Jw zbM!kHL~eO`bxACVOQKLNlq+II5CvY~%YyJ;{9Al4t_mfAFY@9)Ft374oV))N*F`Xg IU$I>H7Zzn0ssI20 literal 0 HcmV?d00001 diff --git a/badminton/__pycache__/urls.cpython-310.pyc b/badminton/__pycache__/urls.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f6d0fd669c052eb4f8c394a8e5bb69d6ba79497b GIT binary patch literal 982 zcmb7D%Z}496m`<{LE1sHVeefUsl)>kn+gyJF=8Zy#B0+{#*N)3RUAjQ158&){TeoW zP`0f21r~^FH$@Q=5?HEhN5|)$bFMAV&O!v^>+3t4ivdF4?4~~g*gS!swi81u#60Gg zp72+`XV-&rAc9pOhO426_>cuWV8erV@L@gT{%*7zAN;Mqny~R(6i?`9AEEI5o0m9~ z)uz}sikd=Jcq0{FQznYaz^+zu$1{_J;k%sU>qeC|HHNE7U*odS1}oVZt}*avY$X0r z@Q*sdmp~$<;<%`QPaK)+l2gsG=6o4q7`ZXEUJ}A&rW3ZK)mEO$Wl|7ckq5~IF|sZ) zO)Qu|c}>FSpQr#Xy$mm#Ds!S;Sx0&=!A}{(w8Dj`r7}y5H%baDZcnIMNl~n7yYcR%otbbD>P0p1Sk~qaDIWK_g zf7DofLUn3M=J6kjuBxnTSW#^u1Xs^mvpqiLbLE1;AO+fEv3wrmO&8_z7}v2Ki4FWD zvcoQ1DF3W>UCJ$i08f=7`@!)>aU6b!tBhi=9l8q_`|Y^HwSkR(KdNO3E#HUk-yPeJ z9G1L_Z?)qzh0Bws?d?u4*fgqGE4bRIo%T#9cu`2%C)5VIFuV<{wRYNT_ZOt57G$R% tb7K2TG}T#7$?x~jTiNqTebY`J3dx$1Klb39p1~BL+4;FQ8_c}P&tDoRFX8|I literal 0 HcmV?d00001 diff --git a/badminton/__pycache__/wsgi.cpython-310.pyc b/badminton/__pycache__/wsgi.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dc530064f0275c776706fd05c5c146f099a88f2a GIT binary patch literal 544 zcmYjO&2AGh5cWE0Qx=L4qMUss60CdSf=~rg+b9T7i?QU1|Q;ahtWwgCo+*# zC-WrUJxxt--b)B1%l^+D*_S)FG)BGeWWFouj0|^gex=`LqcJPcma1YUw(ML;qpU~E zniiK(_$*Dwp21av4jl6}uuX~3TAXWO!ZE=N$_ou|G^{|gm1xyEWrYFB77NidS{1@8 zw2MW=JB>UBTVTpYO0!O|$mnb3SgAC;W)2{&y>Hw*&LtKulS^SM{I97%!@=^m*&(m- z(j%A9XuLLHJ->97;_06_5HcAi;Y9^L@BZ>F8R6yer;n4-G@qTEosB1>S^i~u{Ppw6 z&GU!;GY8%)Te;yN4DvjR$n!wag=ZTnSrI$PI^dQ@sxSb%QZ3q$#zG0DxX?a4-r~F? vZMV#|`}->DHo%>5MJ@OP>DH@5&YJ76_kJ_nqqu+KI)pyid-Q}pr78Ufn%<~q literal 0 HcmV?d00001 diff --git a/badminton/asgi.py b/badminton/asgi.py new file mode 100644 index 0000000..a722501 --- /dev/null +++ b/badminton/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for badminton 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.0/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'badminton.settings') + +application = get_asgi_application() diff --git a/badminton/settings.py b/badminton/settings.py new file mode 100644 index 0000000..f970fc3 --- /dev/null +++ b/badminton/settings.py @@ -0,0 +1,124 @@ +""" +Django settings for badminton project. + +Generated by 'django-admin startproject' using Django 5.0.4. + +For more information on this file, see +https://docs.djangoproject.com/en/5.0/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/5.0/ref/settings/ +""" + +from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'django-insecure-h1@o4r1d7d%t3h#hfnh4ip_m-w=e-u43!)!0(_4qchijzlhfxj' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + "polls.apps.PollsConfig", + "django.contrib.admin", + "django.contrib.auth", + "django.contrib.contenttypes", + "django.contrib.sessions", + "django.contrib.messages", + "django.contrib.staticfiles", +] + +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 = 'badminton.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 = 'badminton.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/5.0/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/5.0/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.0/topics/i18n/ + +LANGUAGE_CODE = 'de-DE' + +TIME_ZONE = 'Europe/Berlin' + +USE_I18N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/5.0/howto/static-files/ + +STATIC_URL = 'static/' + +# Default primary key field type +# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' diff --git a/badminton/urls.py b/badminton/urls.py new file mode 100644 index 0000000..0316ede --- /dev/null +++ b/badminton/urls.py @@ -0,0 +1,23 @@ +""" +URL configuration for badminton project. + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/5.0/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 include, path + +urlpatterns = [ + path("polls/", include("polls.urls")), + path("admin/", admin.site.urls), +] \ No newline at end of file diff --git a/badminton/wsgi.py b/badminton/wsgi.py new file mode 100644 index 0000000..0fdb995 --- /dev/null +++ b/badminton/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for badminton 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.0/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'badminton.settings') + +application = get_wsgi_application() diff --git a/db.sqlite3 b/db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..62dfcc8034af37b745344d3ba9e12ef2846723ee GIT binary patch literal 143360 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 V5C8!X009sH0T2KI5IC#^{tso&XvF{k literal 0 HcmV?d00001 diff --git a/manage.py b/manage.py new file mode 100755 index 0000000..f549920 --- /dev/null +++ b/manage.py @@ -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', 'badminton.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() diff --git a/polls/__init__.py b/polls/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/polls/__pycache__/__init__.cpython-310.pyc b/polls/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2c1860a02cad3f48487151678f32ef16f039ec55 GIT binary patch literal 133 zcmd1j<>g`kf@1-qX(0MBh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o2BlKO;XkRlhi~ zI5{IxKPfRKH#4s!KTp3PKPRVHKR!M)FS8^*Uaz3?7Kcr4eoARhsvXFLVkRKL!T;&wl0_lV#Uxe}2mb`iDfBk&GFS4pt6ZV0 zYNne$&=cQ7NQ$%B1X%Ac_iwMYdSIPhX41Q=OjKKq7fczbhEB3~- z0K-R!M?b`Zn7PwsUEi51FLqmBIW|Vgg51st6l4s6ezS~YkcG%eC3KUu(b^6IuNU|v ztDQ-3lavOPw#jX=TXwCvFO)_%sy%lVk6a`~B}*lQ8w)|yPWyN&#B(S0p>u{Rmz{2f zBmt543Zd_PLgO#d!|zqPH>FCgwA;N*HxkRDYE6~)qf%MdHmP44PJDkKdqNOF$RgI) jRxx*z!_uDH1YX#)|3?hbglaCj9(KL)m$6=O3UmGkjBa7Q literal 0 HcmV?d00001 diff --git a/polls/__pycache__/models.cpython-310.pyc b/polls/__pycache__/models.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..278601ca5e52cea1ce911dc9b08631ace173c793 GIT binary patch literal 1257 zcmZuxO-~y!5ViLs>kSD-R8UG)l~bi$h}1KxK%ul%)kqbb_F^ruA)D?8*iIo)r5@TV z{{fEtjh^}&eC>&IZ#{KpcN3)oN1lwwiL&$GjEDjGAyD;@T zFoFo0k_i8ulx9xkQ1so@&AiB?G@EchnWU2?aw>Vr_?84Nqz(^8NK_W-GBTrD_T+zsv?sY@BH#7>W`y*D} z8ij(vZJ}kK#!{Q4$nSnZiCb!$S$xS;nV*{BbXmkkZk>&f(?k!Y7*I%=4fJvLVE$=< z`ASCQ5Go+{_IX{E8+mDQ`!WNy+4rfMv= zNvAL7*dNaAcbb-Qp2wNw+%`FfR*X~hTb!SdvzE6WcA>&6@01?K}7&zEZB9`U;}p zjPxKhA^*%TGhsf=aM)+Ke(uhmZa8C~1piltaE-^^qW}Z0S;Y&^83YjOpbCo+?Wl+p zhggN17!pX|L!=BTf!=}oNGaq88X#pbBw9s94@L_%8SgOzn{XdBvR&`77=n0Psu$^^xl^t!O}#8(E_?#2m8ITY9Q&+too=1*>A~8a9|vts ztAvl}x}EfW4jWmo%(S!G*#N7u2}y+FGubptD#WJr)+3>L+MK*Oe!*T^Wo!4r?3f%R zUzcKSDkYqBk83F&Bvjaisl{KDf)Y)eH=oTa1D#fL8ihMS8L&YR1*2fZX=mTR{g8J^ literal 0 HcmV?d00001 diff --git a/polls/__pycache__/views.cpython-310.pyc b/polls/__pycache__/views.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1e838dccea427934b1cdad22cda0a54367ffe2cc GIT binary patch literal 1058 zcmZvb!EO^V5I}A3X0vIwC52Li1kzqA$e{^`9uY#~!U07BPK3j16T8i}-gU5@(njg2 zaO59=TYt${PWc5+%y<(h1xxmfz2liTGhVg1xj|rje}DII$q4y@o9hG4$a9$H6)c=^ zDoII)v}8j@anEE>hQko_fQPbCM#Bj729G|GVUss`3^L{|z5%ku+dKie!8hNM?$#1K zk}h-GN5W=mbS%aobawFMz(rbAT<9z6l9$#_-v~2Rl@UvdH>itW&xEmss>XP*9swvJ z%oi}tV^}OXre7JS-zb89X7|Yj<-vj$^n%%7L3p@emjR$O2J_bbbT-O(ZpE?zSKW>T z)!6LADpDp3W9OZzlG5}GfII6=Y$>~;ZlZa!<~J@@8o;yBxkj9B;F?-^AG+o3#;UU7 z%w7?_1^b_S{fR0?-{fXI$@`<6mqle&)vx267UHAnP0wA!M?^3a!LmbRno!*Vb&L&K z4-AP$z5)+GvBc5^<@5`Kj2UFiAb(a+pLIBZQnKmEe7lauh0P1;({k}T?{1(mg3of5 zl1|{jwbvF|!S!u4!G!AN78*pgKYU&W+mg@@)jOd4gN)c78582z9I{{wx=Su8G=~l5 z`|s53krt^`>ZGWS(%hzYB2q2POj?tw!*mUk?wOv(Xuyq_`VK5E221~dZZbl1ybDD4 zkRjG}7j}O^Vg-IfqFW1?*8v}{08f=gK2`k(i2VV&i4np*fi*N32?*|i725ao_w*K%+y(9dsEw~+Fs$B z_kcIy8TQJlPk@A=V%AA$kyvZT`|WzZnfYd|I-Qn9P4cM{e)vn3MI`X(~r83IHQmU-b^;7{S z#mJo99c=b1}u!`byV7?t$zQ9^s2M#tiVh0#K0%}m7iBk>@+G~OX%^4%qBGiI5 zxCTWwbY{Hr?f%zy)Hvbq=P`Wf`Ga^O_0`Z5S&fJ#N*in_=JRD|k7_-UDbAsLkd+wW;;^-^a+Fc_o|LUa9A=Ty9ERGd(luRa z40ewPyL)eSOHFWbA-`I=M=>k&^F@EGQtTIDF&c;cVF;oWdZ+z4lh9x(n(+&DifAFr+-&QtBdus8oTddqzC m$3&)^f6ptqDupWF+q~ziXXb0?)w~0*O;3xu$%e18E&C5aDj)a& literal 0 HcmV?d00001 diff --git a/polls/migrations/__pycache__/__init__.cpython-310.pyc b/polls/migrations/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4f0f9856e03990ec42bdb08fb53e6941f0752fad GIT binary patch literal 144 zcmd1j<>g`kf@1-qX(0MBh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6vQKO;XkRlhi~ zI5{IxKPfRKH#4s!KTp3PKPRVHKQ}YID6u3nKd)FnK0Y%qvm`!Vub}c4hfQvNN@-52 N9mud^CLqDW001zTAQ}Jw literal 0 HcmV?d00001 diff --git a/polls/models.py b/polls/models.py new file mode 100644 index 0000000..c9f2d1b --- /dev/null +++ b/polls/models.py @@ -0,0 +1,19 @@ +import datetime +from django.utils import timezone +from django.db import models + + +class Question(models.Model): + question_text = models.CharField(max_length=200) + pub_date = models.DateTimeField("date published") + def __str__(self): + return self.question_text + def was_published_recently(self): + return self.pub_date >= timezone.now() - datetime.timedelta(days=1) + +class Choice(models.Model): + question = models.ForeignKey(Question, on_delete=models.CASCADE) + choice_text = models.CharField(max_length=200) + votes = models.IntegerField(default=0) + def __str__(self): + return self.choice_text \ No newline at end of file diff --git a/polls/templates/polls/detail.html b/polls/templates/polls/detail.html new file mode 100644 index 0000000..e38ffba --- /dev/null +++ b/polls/templates/polls/detail.html @@ -0,0 +1,6 @@ +

{{ question.question_text }}

+
    + {% for choice in question.choice_set.all %} +
  • {{ choice.choice_text }}
  • + {% endfor %} +
\ No newline at end of file diff --git a/polls/templates/polls/index.html b/polls/templates/polls/index.html new file mode 100644 index 0000000..43182f0 --- /dev/null +++ b/polls/templates/polls/index.html @@ -0,0 +1,9 @@ +{% if latest_question_list %} + +{% else %} +

No polls are available.

+{% endif %} \ No newline at end of file diff --git a/polls/tests.py b/polls/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/polls/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/polls/urls.py b/polls/urls.py new file mode 100644 index 0000000..8836fe6 --- /dev/null +++ b/polls/urls.py @@ -0,0 +1,11 @@ +from django.urls import path + +from . import views + +app_name = "polls" +urlpatterns = [ + path("", views.index, name="index"), + path("/", views.detail, name="detail"), + path("/results/", views.results, name="results"), + path("/vote/", views.vote, name="vote"), +] \ No newline at end of file diff --git a/polls/views.py b/polls/views.py new file mode 100644 index 0000000..79e2140 --- /dev/null +++ b/polls/views.py @@ -0,0 +1,19 @@ +from django.shortcuts import get_object_or_404, render +from django.http import HttpResponse +from .models import Question + +def index(request): + latest_question_list = Question.objects.order_by("-pub_date")[:5] + context = {"latest_question_list": latest_question_list} + return render(request, "polls/index.html", context) + +def detail(request, question_id): + question = get_object_or_404(Question, pk=question_id) + return render(request, "polls/detail.html", {"question": question}) + +def results(request, question_id): + response = "You're looking at the results of question %s." + return HttpResponse(response % question_id) + +def vote(request, question_id): + return HttpResponse("You're voting on question %s." % question_id) \ No newline at end of file