Bonjour à tous, je suis nouveau sur Django. Maintenant, je veux apprendre à créer une fonction de téléchargement. Configurez un lien hypertexte dans le HTML frontal, obtenez le nom du fichier et téléchargez-le via la méthode d'accès en arrière-plan.
Le code est le suivant :
Réception : (relativement simple, juste un tableau avec des mots hypertextes)
Configuration URL :
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^register/',views.userRigister,name='register'),
url(r'^register/(.*)/$',views.file_download,name='download'),
]
Méthode 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!')
Mon objectif est de sélectionner un navigateur téléchargeable lorsque vous accédez normalement à la même page, et de cliquer sur le bouton hyperlien pour accéder à la méthode file_download
方法并下载对应浏览器。但是目前无法访问到file_download
. Veuillez me donner quelques conseils. Merci
Django fait correspondre les URL de haut en bas dans la liste d'URL
Tout ce qui peut être mis en correspondance par
^register/(.*)/$
doit correspondre au^register/ matches
^register/(.*)/$
匹配的一定能被上面的^register/
匹配所以就出现了
^register/(.*)/$
Il y a donc une situation où^register/(.*)/$
ne correspond jamaisLa solution est très simple, il suffit de changer l'ordre de ces deux
Lorsque vous utilisez la fonction d'analyse d'URL de Django, n'oubliez pas que les URL plus détaillées doivent être placées plus en avant et que les URL plus « floues » doivent être placées plus en arrière.