python - L'URL de l'interface de Django n'a pas réussi à accéder correctement à la méthode, aidez-moi s'il vous plaît ?
为情所困
为情所困 2017-05-18 10:56:48
0
1
587

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

为情所困
为情所困

répondre à tous(1)
阿神

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 jamais
La solution est très simple, il suffit de changer l'ordre de ces deux

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

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!