# 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 2. Aktivace virtuálního prostředí > .venv\Scripts\activate.bat 3. Instalace frameworku Django > (.venv) pip install Django 4. 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í) 5. 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 6. vytvoření základního modelu v *název_projektu/models.py* ```python 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 ``` 7. vytvoření souboru **forms.py** ve složce *název_aplikace* ```python from django.forms import ModelForm from .models import feedbackModel class feedbackForm(ModelForm): class Meta: model = feedbackModel fields = '__all__' ``` 8. 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 "** **" ```python 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 ```python 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) ``` 9. vytvoříme složku *templates* v složce s aplikaci a vytvoříme ve složce jestě soubor *index.html* ```html

Feedback formular

{% csrf_token %} {{form}}
``` 10. Přidat model do admin.py ```python from django.contrib import admin from .models import feedbackModel admin.site.register(feedbackModel) ``` 11. zkontrolujeme databázi (migrujeme) a vytvoříme si SuperUser > (.venv) python manage.py makemigrations > (.venv) python manage.py migrate > (.venv) python manage.py createsuperuser 12. **HOTOVO - vložíme nějaké texty a zkontrolujeme admin panel** #### Postup pro hezčí formulář 1. nainstalovat crispy_forms > (.venv) pip install django-crispy-forms 2. vložit na začátek souboru index.html `{% load crispy_forms_tags %}` 3. 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í ```html

Feedback list

Domu ``` 2. do *views.py* vložíme na začátek `from .models import feedbackModel` a ba konec následující řádky: ```python 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}) ``` 3. do *urls.py* vložíme do importu views i metody ***feedbackview, feedbackinfoview*** a do **urlpatterns** vložíme následující: ```py path('feedback/',feedbackview), path('feedbackinfo/', feedbackinfoview) ``` 4. vytvořímě *feedbackinfo.html* soubor ve složce *templates* a do `body` vložíme následující ```html

{{ feedbackinfo.nazev}}

{{feedbackinfo.zprava}}

ZPET ``` 5. upraváme index.html a pod `
` vložíme následující: ```
SEZNAM ODPOVĚDÍ ``` ## 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 do složky > cd djangoform 4. Do Console napsat >pip install django >pip install django-crispy-forms 5. Migrovat databazi > python manage.py migrate 6. Vytvořit admin učet > python manage.py createsuperuser 7. spustit server > python manage.py runserver