Jak zrobić template w Django?

1

Witam, jak utworzyć formularz templatne - notatnik? Potrzebuję nie ograniczone pole txt z przyciskiem zapisz.

models.

class Note(models.Model):
    """..."""
    notes = models.CharField(max_length=100, unique=True)
    description = models.TextField()

    class Meta:
        verbose_name = "Note"
        verbose_name_plural = "Notes"

    def __str__(self):
        return self.notes

views.py

class NoteView(View):
    def get(self, request):
        text = Note.objects.all().order_by('notes')
        return render(request, 'Files/note.html', {'text': text')

html

{% extends 'Files/base.html' %}

{% block title %}Notatnik{% endblock %}
<h2>Notatnik Dietetyka/ Zalecenia ręczne </h2>

{% block content %}

<p>Podaj swój komentarz:</p>
<textarea name="formularz" cols="50" rows="10">Proszę, wpisz tutaj jakiś komentarz...</textarea>  ---------------- zamiast tego kodu
<br>


    <button type="button" class="btn btn-primary btn-lg"><a href="{% url 'menu' %}">Powrót</a></button>
{% endblock %}

dziękuję za pomoc, na nd muszę to zrobić i utknąłem :/

38

Musisz stworzyc forms

0
ledi12 napisał(a):

Musisz stworzyc forms

wiem, tylko nie bardzo mogę sobie z tym poradzić

38

Z czym dokładnie?

0

Z napisanie forms i pobraniem ich do tempale

class NoteAddForm(forms.ModelForm):
    """New note add form"""

    class Meta:
        model = Note
        exclude = ['notes', 'description']
 ale to nie dziala

{% block content %}

{#<p>Podaj swój komentarz:</p>#}
{#<textarea name="formularz" cols="50" rows="10">Proszę, wpisz tutaj jakiś komentarz...</textarea>#}
{#<br>#}

    {{ Note }}

    <button type="button" class="btn btn-primary btn-lg"><a href="{% url 'menu' %}">Powrót</a></button>
{% endblock %}

przepraszam ze tak długo dopisuje ale mam info "zbyt wiele prób.. "

38

Formularz musisz wywołać w views -> https://docs.djangoproject.com/en/4.0/topics/forms/

0

ok, chyba rozumiem a w template co ma wpisać w miejsce {{ Note }}? Z góry dziękuję za pomoc

1

a już wiem :D

<form action="/your-name/" method="post">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Submit">
</form>
0

Udało się, dziękuję za pomoc, mam jeszcze 2 pytania"

  1. gdzie szukać problemu - jak zrobię wyślij to przechodzę na stronę wysłania ale nic w panelu admina nie widać?
  2. mam jeszcze problem bo np opis z HTML

    Notatnik Dietetyka/ Zalecenia ręczne

    widzę we wszystkich templatkach, zamiast np w html dotyczącym manu powinno być lista posiłków, a nam notatnik.. :/
38
progcet98 napisał(a):

Udało się, dziękuję za pomoc, mam jeszcze 2 pytania"

  1. gdzie szukać problemu - jak zrobię wyślij to przechodzę na stronę wysłania ale nic w panelu admina nie widać?
  2. mam jeszcze problem bo np opis z HTML

    Notatnik Dietetyka/ Zalecenia ręczne

    widzę we wszystkich templatkach, zamiast np w html dotyczącym manu powinno być lista posiłków, a nam notatnik.. :/
  1. Formularz musi zostać zwalidowany a następnie zapisany (wszystko masz w podanej dokumentacji).
  2. Mów pan po Polsku :D Strzelam, że wszystko masz w block content więc ten header powinien polecieć do każdej templatki osobno, bo na razie masz jeden generalny.
0

thx, za porady ale może Pan jeszcze spojrzeć na kod, bo chyba coś pomyliłem niby wszystko działa ale nie mam dalej danych w panelu admina :/

class NoteView(View):
    def get(self, request):
        if request.method == 'POST':
            textN = Note.objects.all().order_by('notes')
            form = NoteAddForm(request.POST)
            if form.is_valid():
                form.save()
                return redirect('Files/menu')
        else:
            textN = NoteAddForm()
        return render(request, 'Files/note.html', {'textN': textN})



        class NoteAddForm(forms.ModelForm):
    """New note add form"""

    class Meta:
        model = Note
        fields = '__all__'


            <form action="/send/" method="post">
        {% csrf_token %}
        {{ textN }}
        <label>
            <input type="text" class="btn btn-second btn-lg">
            <button><a href="{% url 'send' %}">Wyślij formularz</a></button>
        </label>


    </form>
1

Nie powinieneś obsługiwać zapytania POST w metodzie get. To się mija z celem cbv. Powinieneś zrobić oddzielną metodę post i tam implementacja dla obsługi zapytania. Wszystko jest dobrze wyjaśnione w dokumentacji.

https://docs.djangoproject.com/en/4.0/topics/class-based-views/intro/

1 użytkowników online, w tym zalogowanych: 0, gości: 1