Понимание Django и Django FormView - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь создать веб-приложение Django, которое принимает текст в форме / текстовом поле, обрабатывает его и перенаправляет на веб-страницу, показывающую обработанный текст.Я написал наполовину функционирующее приложение и считаю, что устранение ошибок довольно сложно, потому что я не понимаю большую часть того, что я сделал.Я надеюсь, что вы поможете мне понять несколько концепций, также важно оценить связь с ресурсами.

  1. Рассмотрим эту простую модель:

    class ThanksModel(models.Model):
         thanks_text = models.CharField(max_length=200)
    

    Это единственный способустановить текст thanks_text через оболочку manage.py?Это похоже на боль, если у меня есть только один фрагмент текста, который я хочу отобразить.Если я хочу отобразить веб-страницу с надписью «Привет», нужно ли мне создавать модель?

  2. Рассмотрим вид и шаблон ниже:

    views.py
    class TestView(generic.FormView):
      template_name = 'vader/test.html'
      form_class = TestForm
      success_url = '/thanks/'
    
    test.html
    <form action = "{% url 'vader:thanks'%}" method="post">
      {% csrf_token %}
      {{ form }} 
      <input type = "submit" value = "Submit">
    </form>
    

    Мне нужно создать другую модель, просмотреть и HTML-шаблон и обновить urls.py для '/ спасибо /' для правильного перенаправления success_url?(Это то, что я сделал.) Нужно ли использовать reverse () или reverse_lazy () success_url в этой ситуации?

1 Ответ

0 голосов
/ 16 ноября 2018

Модели используются, когда вы имеете дело с объектами, базами данных и данными, которые могут содержать много информации. Например, человек будет моделью. их атрибуты: возраст, имя, национальность и т. д.

models.py

class Person(models.Model):
    Name = models.CharField(max_length=50)
    age = models.IntegerField()
    nationality = models.CharField(max_length=50)

Это имеет дело с несколькими битами информации для одного объекта. (объект, являющийся человеком)

А спасибо сообщение не понадобится? так что откажитесь от модели для сообщения спасибо. просто имейте представления, где вы создаете представление, используя шаблоны и устанавливая представление в URL.


views.py

class TestView(generic.FormView):
    template_name = 'vader/test.html'  # self explantory
    form_class = TestForm  # grabs the test form object
    success_url = reverse_lazy('vader:thanks') # this makes sure you can use the name of the url instead of the path

def ThanksView(request):  # its simple so you don't even need a class base view. a function view will do just fine. 
    return render(request,"thanks.html")

test.html

<form action = "{% url 'vader:thanks'%}" method="post">
    {% csrf_token %}
    {{ form }} 
    <input type = "submit" value = "Submit">
</form>

thanks.html

    <h1>Thank you for Submitting</h1>
    <h2> Come Again </h2>

url.py

from django.urls import path
from djangoapp5 import views

urlpatterns = [
    path('', TestView.as_view(), name='test_form'),
    path('thanks/', views.ThanksView, name='vader:thanks'),

]

Я не проверял это, но, надеюсь, это поможет и направит вас в правильном направлении

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...