python - Django前臺url未能正確訪問方法求助?
問題描述
大家好,小弟初學(xué)django,現(xiàn)在想學(xué)著做一個(gè)下載功能,前臺html設(shè)置超鏈接,通過后臺訪問方法獲取到文件名并下載。代碼如下:前臺:(比較簡單,只是一個(gè)table里面套帶超鏈接的字)
URL配置:
urlpatterns = [ url(r’^admin/’, admin.site.urls), url(r’^register/’,views.userRigister,name=’register’), url(r’^register/(.*)/$’,views.file_download,name=’download’),]
VIEW方法:
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 celse: break if os.path.exists(’software/’ + filename):the_file_name = filenameresponse = StreamingHttpResponse(file_iterator(the_file_name))return response else:return HttpResponse(’error!no such file!’)
小弟的目的是正常訪問同一個(gè)頁面時(shí),選擇可下載的瀏覽器,點(diǎn)擊超鏈接按鈕后,訪問file_download方法并下載對應(yīng)瀏覽器。但是目前無法訪問到file_download方法,懇請各位大神指點(diǎn)。謝謝了
問題解答
回答1:Django匹配url的時(shí)候是在url列表中從上往下依次匹配能被^register/(.*)/$匹配的一定能被上面的^register/匹配所以就出現(xiàn)了^register/(.*)/$永遠(yuǎn)匹配不到的情況解決方法很簡單,這兩個(gè)調(diào)個(gè)順序就好
url(r’^admin/’, admin.site.urls),url(r’^register/(.*)/$’,views.file_download,name=’download’),url(r’^register/’,views.userRigister,name=’register’),
在使用Django的url解析功能的時(shí)候,要記住越詳細(xì)的url要越往前放,越“模糊”的url要越靠后。
相關(guān)文章:
1. 網(wǎng)頁爬蟲 - python爬蟲翻頁問題,請問各位大神我這段代碼怎樣翻頁,還有價(jià)格要登陸后才能看到,應(yīng)該怎么解決2. python如何不改動文件的情況下修改文件的 修改日期3. 算法 - python 給定一個(gè)正整數(shù)a和一個(gè)包含任意個(gè)正整數(shù)的 列表 b,求所有<=a 的加法組合4. python - thrift 返回 TSocket read 0 bytes 求助!!!!5. javascript - 微信h5發(fā)送圖文信息,部分設(shè)備點(diǎn)擊“發(fā)送”按鈕時(shí)沒反應(yīng),問題較難重現(xiàn),如何能找到可能存在問題的點(diǎn)?6. javascript - 微信小程序里怎么把頁面轉(zhuǎn)成圖片分享7. python 正則表達(dá)式提取8. python - 求一個(gè)在def中可以實(shí)現(xiàn)調(diào)用本def滿足特定條件continue效果的方法(標(biāo)題說不太清楚,請見題內(nèi)描述)9. javascript - JS用ajax爬取百度外賣店家信息10. python - Pycharm調(diào)試代碼進(jìn)行列表遍歷時(shí),如何直接賦值指定元素
