Rumah > Soal Jawab > teks badan
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
阿神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.