Heim > Fragen und Antworten > Hauptteil
Hallo zusammen, ich bin neu bei Django. Jetzt möchte ich lernen, einen Hyperlink im Front-End-HTML einzurichten, den Dateinamen abzurufen und ihn über die Hintergrundzugriffsmethode herunterzuladen.
Der Code lautet wie folgt:
Rezeption: (relativ einfach, nur eine Tabelle mit verlinkten Wörtern)
URL-Konfiguration:
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^register/',views.userRigister,name='register'),
url(r'^register/(.*)/$',views.file_download,name='download'),
]
VIEW-Methode:
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!')
Mein Ziel ist es, beim normalen Zugriff auf dieselbe Seite einen herunterladbaren Browser auszuwählen und auf die Hyperlink-Schaltfläche zu klicken, um auf die file_download
方法并下载对应浏览器。但是目前无法访问到file_download
-Methode zuzugreifen. Bitte geben Sie mir einen Rat. Danke
阿神2017-05-18 10:58:48
Django匹配url的时候是在url列表中从上往下依次匹配
能被^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要越靠后。