Heim  >  Fragen und Antworten  >  Hauptteil

python – Die Django-Frontend-URL konnte nicht korrekt auf die Methode zugreifen. Bitte helfen Sie?

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

为情所困为情所困2690 Tage vor590

Antworte allen(1)Ich werde antworten

  • 阿神

    阿神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要越靠后。

    Antwort
    0
  • StornierenAntwort