python - url frontend Django gagal mengakses kaedah dengan betul, tolong bantu?
为情所困
为情所困 2017-05-18 10:56:48
0
1
645

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

为情所困
为情所困

membalas semua(1)
阿神

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan