Saya mengalami masalah dalam mendapatkan konten dari formulir dan menampilkannya di halaman lain.

Ketika saya mengklik kirim, itu mengarahkan saya ke halaman yang benar tetapi tidak dimuat karena ada kesalahan dalam fungsi saya. Saya juga tidak yakin bagaimana menampilkan konten pada halaman.

Formulir saya:

<div class = "container">
<form action="{% url 'cleaner:result' %}" method ="post" >
  {% csrf_token %}
  <div>
    <label for="cv">Enter details: </label>
    <textarea name="cv" id='cv' rows="10" cols="30" maxlength="20000"></textarea>
  </div>
  <div>
  <button>Submit</button>
  </div>
</form>
</div>

urls.py

url(r'clean/result/$', views.ResultView.as_view(), name='result'),

Masalah saya terletak di sini, di views.py

class ResultView(View):

    template_name = 'cleaner/result.html'
    #Get details from form
    details = request.form.get("cv")
    def result(request):
        if details != '':

        return render(request, template_name)

Ini bukan cara yang benar untuk mendapatkan konten dari formulir. Bagaimana saya bisa mendapatkan ini?

details = request.form.get("cv")

NameError: name 'request' is not defined

Setelah itu, bagaimana cara menampilkan isi formulir?

Saya menggunakan Django 1.9 dan python 3.6.4.

edit:

Ini kode yang berfungsi jika ada yang menemukan ini:

class ResultView(View):

    template_name = 'cleaner/result.html'

    def post(self, request):
        #Get details from form
        details = request.POST.get("cv")

        if details != '':

            return render(request, self.template_name)
0
Yunter 5 Mei 2018, 15:14

1 menjawab

Jawaban Terbaik

Ada beberapa hal yang salah. Pertama, apa pun yang melibatkan permintaan harus dilakukan dalam suatu metode, bukan di tingkat kelas; kelas didefinisikan pada waktu impor, dan tidak ada permintaan pada saat itu.

Kedua, tidak ada gunanya mendefinisikan metode yang disebut request. Dalam tampilan berbasis kelas, metode utama diberi nama setelah metode HTTP - get dan post - jadi Anda perlu mengganti yang relevan di sini, yaitu post.

Ketiga, tidak ada request.form di Django; Anda sedang memikirkan Flask. Di Django Anda perlu menggunakan request.POST.

Dan akhirnya, untuk menampilkan konten formulir, Anda harus meneruskannya sebagai konteks ke fungsi render.

2
Daniel Roseman 5 Mei 2018, 12:17