python - Django前台url未能正確訪問方法求助?
为情所困
为情所困 2017-05-18 10:56:48
0
1
619

大家好,小弟初學django,現在想學著做一個下載功能,前台html設置超鏈接,通過後台訪問方法獲取到文件名並下載。
程式碼如下:
前台:(比較簡單,只是一個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 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!')

小弟的目的是正常造訪同一個頁面時,選擇可下載的瀏覽器,點擊超連結按鈕後,造訪file_download方法並下載對應瀏覽器。但是目前無法存取file_download方法,懇請各位大神指點。謝謝了

为情所困
为情所困

全部回覆(1)
阿神

Django匹配url的時候是在url列表中從上往下依次匹配
能被^register/(.*)/$匹配的一定能被上面的^register/匹配^register/(.*)/$匹配的一定能被上面的^register/匹配
所以就出现了^register/(.*)/$所以就出現了^register/(.*)/$永遠匹配不到的情況
解決方法很簡單,這兩個調個順序就好

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

在使用Django的url解析功能的時候,要記住越詳細的url要越往前放,越「模糊」的url要越靠後。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板