Primarne pro 3.IM - Django aplikace pro jednoduché vytvoření formuláře
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Jakub Škrabánek 267a89b465 update readme.md 3 years ago
djangoform update feedback 3 years ago
.gitignore first commit 3 years ago
README.md update readme.md 3 years ago
logo.png add logo.png 3 years ago

README.md

Django-form

Primarne pro 3.IM - Django aplikace pro jednoduché vytvoření formuláře

Django formuláře - postup pro vytvoření formuláře

Nejprve si zjistíme, jestli jsme ve virtualním prostředí pro python

(venv) C:\pythonProjects\Django : - ukazka cmd prostředí

Pokud používáme IDE které nám vytvoří venv (např. PyCharm) tak můžeme přeskočit na bod 3. Pokud nemáme virtualní prostředí aktivované postupujeme následovně:

  1. vytvoření virtualního prostředi

python -m venv .venv

  1. Aktivace virtuálního prostředí

.venv\Scripts\activate.bat

  1. Instalace frameworku Django

(.venv) pip install Django

  1. Založení Django projektu

(.venv) django-admin startproject název_projektu .

Nezapomenout na TEČKU na konci příkazu (jinak to bude složitější složkování)

  1. Založení Django aplikace

(.venv) python manage.py startapp název_aplikace

a následné přidání název_aplikace do název_projektu/settings.py do kolonky INSTALLED_APPS

  1. vytvoření základního modelu v název_projektu/models.py
from django.db import models


class feedbackModel(models.Model):
    nazev = models.CharField(max_length=100)
    zprava = models.TextField(max_length=10000)

    def __str__(self):
        return  self.nazev + " " + self.zprava
  1. vytvoření souboru forms.py ve složce název_aplikace a přidat 'forms', do název_projektu/settings.py do kolonky INSTALLED_APPS
from django.forms import ModelForm
from .models import feedbackModel

class feedbackForm(ModelForm):
    class Meta:
        model = feedbackModel
        fields = '__all__'
  1. Přídání IndexView do nazev_projektu/urls.py a název_aplikace/views.py

urls.py -> přídáme jen to, co je ve "** **"

from django.contrib import admin
from django.urls import path
**from form.views import indexView**

urlpatterns = [
    path('admin/', admin.site.urls),
    **path('',indexView),**
]

views.py

from django.shortcuts import render
from .forms import feedbackForm

def indexView(request):
    form = feedbackForm
    if request.method == "POST":
        #print(request.POST) #potrebuju zkontrolovani
        form = feedbackForm(request.POST)
        if form.is_valid():
            form.save()
    context = {'form':form}
    return render(request,"index.html", context)
  1. vytvoříme složku templates v složce s aplikaci a vytvoříme ve složce jestě soubor index.html
<h1>Feedback formular</h1>

<form action="" method="post">
    {% csrf_token %}
    {{form}}
    <input type="submit">
</form>
  1. Přidat model do admin.py
from django.contrib import admin
from .models import feedbackModel

admin.site.register(feedbackModel)
  1. zkontrolujeme databázi (migrujeme) a vytvoříme si SuperUser

Upozornění!!! PŘI KAŽDÉ ZMĚNĚ MODELS.PY JE POTŘEBA MAKEMIGRATIONS

(.venv) python manage.py makemigrations

(.venv) python manage.py migrate

(.venv) python manage.py createsuperuser

  1. HOTOVO - vložíme nějaké texty a zkontrolujeme admin panel

Postup pro hezčí formulář

  1. nainstalovat crispy_forms

(.venv) pip install django-crispy-forms

  1. vložit na začátek souboru index.html

{% load crispy_forms_tags %}

  1. upravit v index.html

{{form}} na {{form | crispy}}

Django formuláře - vypis modelu z databáze

  1. vytvořímě feedback.html soubor ve složce templates a do body vložíme následující
<h1>Feedback list</h1>
<a href="/">Domu</a>
<ul>
    {% for i in feedback %}
        <li>
            <a href="/feedbackinfo/{{i.id}}">{{ i.nazev }}</a>
        </li>
    {% endfor %}
</ul>
  1. do views.py vložíme na začátek from .models import feedbackModel a ba konec následující řádky:
def feedbackview(request):
    feedback = feedbackModel.objects.all()
    return render(request, "feedback.html", {'feedback':feedback})

def feedbackinfoview(request, i):
    feedbackinfo = feedbackModel.objects.get(id=i)
    return render(request, "feedbackinfo.html", {'feedbackinfo':feedbackinfo})
  1. do urls.py vložíme do importu views i metody feedbackview, feedbackinfoview a do urlpatterns vložíme následující:
    path('feedback/',feedbackview),
    path('feedbackinfo/<int:i>', feedbackinfoview)
  1. vytvořímě feedbackinfo.html soubor ve složce templates a do body vložíme následující
<h1> {{ feedbackinfo.nazev}}</h1>
<p> {{feedbackinfo.zprava}}</p>
<a href="/feedback/">ZPET</a>
  1. upraváme index.html a pod <form> vložíme následující:
<br><a href="/feedback/">SEZNAM ODPOVĚDÍ</a>

Kroky k obnově projektu z GITu

Při používání PyCharm:
  1. Vytvoření PyCharm projektu
  2. Stahnout/Klonovát repositář
  3. V archivu rozkliknout django-form a vložit složku djangoform (vedle složky jsou soubory README.md a logo.png) do složky s projektem a přepnout Console (v PyCharm) do složky

cd djangoform

  1. Do Console napsat

pip install django

pip install django-crispy-forms

  1. Migrovat databazi

python manage.py migrate

  1. Vytvořit admin učet

python manage.py createsuperuser

  1. spustit server

python manage.py runserver

Při použití VS CODE:

budeme celou dobu používat CMD (command prompt)

  1. vytvořit si práznou složku a přepnout do ní

mkdir nazevSlozky

cd nazevSlozky

  1. Vytvoření virtuálního prostředí

python -m venv .venv

  1. Aktivace virtuálního prostředí

.venv\Scripts\activate.bat

  1. Instalce Django

pip install django

  1. Stahnout/Klonovát repositář do složky

git clone http://git.asgard.odbornaskola.cz/skrabanek/Django-form.git

  1. prepnout do slozky složky djangoform

cd Django-form\djangoform

  1. Do CMD napsat

pip install django

pip install django-crispy-forms

  1. Migrovat databazi

python manage.py migrate

  1. Vytvořit admin učet

python manage.py createsuperuser

  1. spustit server

python manage.py runserver