cari

Rumah  >  Soal Jawab  >  teks badan

python - url frontend Django gagal mengakses kaedah dengan betul, tolong bantu?

Hello semua, saya baru menggunakan Django Sekarang saya ingin belajar membuat fungsi muat turun Sediakan hiperpautan dalam html bahagian hadapan, dapatkan nama fail dan muat turunnya melalui kaedah akses latar belakang.
Kod adalah seperti berikut:
Meja hadapan: (agak mudah, hanya jadual dengan perkataan hiperpautan)

Konfigurasi URL:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^register/',views.userRigister,name='register'),
    url(r'^register/(.*)/$',views.file_download,name='download'),
]

kaedah LIHAT:

def userRigister(req):
        status='welcome'
        #js alert出信息
        return render(req, 'register.html', {'status':json.dumps(status)})


def file_download(request,filename):
    print(filename)
    def file_iterator(file_name, chunk_size=1024):
        with open(file_name) as f:
            while True:
                c = f.read(chunk_size)
                if c:
                    yield c
                else:
                    break

    if os.path.exists('software/' + filename):
        the_file_name = filename
        response = StreamingHttpResponse(file_iterator(the_file_name))
        return response
    else:
        return HttpResponse('error!no such file!')

Tujuan saya adalah untuk memilih penyemak imbas yang boleh dimuat turun apabila mengakses halaman yang sama seperti biasa, dan klik butang hiperpautan untuk mengakses kaedah file_download方法并下载对应浏览器。但是目前无法访问到file_download Sila beri saya nasihat. Terima kasih

为情所困为情所困2783 hari yang lalu659

membalas semua(1)saya akan balas

  • 阿神

    阿神2017-05-18 10:58:48

    Apabila Django memadankan URL, ia memadankannya dari atas ke bawah dalam senarai URL
    Apa-apa sahaja yang boleh dipadankan dengan ^register/(.*)/$ pasti akan dipadankan oleh ^register/ di atas sepadan dengan ^register/(.*)/$匹配的一定能被上面的^register/匹配
    所以就出现了^register/(.*)/$Jadi terdapat situasi di mana ^register/(.*)/$ tidak boleh sepadan dengan
    Penyelesaiannya ialah sangat mudah, ini Hanya ubah susunan kedua-duanya

    url(r'^admin/', admin.site.urls),
    url(r'^register/(.*)/$',views.file_download,name='download'),
    url(r'^register/',views.userRigister,name='register'),

    Apabila menggunakan fungsi penghuraian URL Django, ingat bahawa URL yang lebih terperinci harus diletakkan lebih jauh ke hadapan dan lebih banyak URL "kabur" harus diletakkan lebih jauh ke belakang.

    balas
    0
  • Batalbalas