Handhabung der einzelnen Seite Anwendung URL und Django URL

9

Ich habe eine Anwendung mit einer Seite in Vue.js erstellt, die den HTML5-Verlaufsmodus für das Routing verwendet, und die HTML-Datei wird mit Django geliefert.

Die urls.py von django ist wie folgt:

%Vor%

Und views.home :

%Vor%

Stellen Sie sich das folgende Szenario vor:

  1. Der Benutzer besucht die Homepage (d. h. / )

Da die Homepage mit der erforderlichen index.html für die Vuejs-App für die einzelne Seite antwortet, funktioniert sie wie sie soll.

  1. Von dort navigiert der Benutzer zur ungefähren Seite (d. h. /username/12 ).

Es funktioniert immer noch gut, da es mit dem Vue-Router navigiert.

  1. Jetzt aktualisiert der Benutzer die Seite.

Da in den urls.py Mustern kein /username/12 vorhanden ist, wird Seite nicht gefunden (404) angezeigt.

Nun könnte ich ein weiteres Muster in urls.py bereitstellen, um alle Muster in der letzten Reihenfolge wie folgt abzufangen:

%Vor%

Aber andere URLs wie die Medien oder statische URLs zeigen auch auf den gleichen fang alle Muster regex . Wie kann ich dieses Problem lösen?

    
Robin 17.03.2017, 18:20
quelle

3 Antworten

5
  

Ich habe ein ähnliches Problem.

     

Wie kann ich vue-router und django rest verwenden?   Framework gleichzeitig ?

Dies ist meine Lösung für dieses Problem. Hoffe es hilft dir.

Ich hoffe auf Ergebnisse:

%Vor%

und ich versuche das und es funktioniert!

urls.py

%Vor%
  

Die Reihenfolge ist wichtig,   %Code%   ist der letzte

und das ist mein Vue-Router

%Vor%

Mein Projekt auf GitHub

    
Bllli 07.10.2017 09:05
quelle
2

Da Sie "einzelne Seite" erwähnt haben:

  1. Der Server soll nur eine Seite des index.html (oder wie auch immer Sie es nennen möchten) bedienen.

  2. Der Server und der Code der Webanwendung (Front-End) würden über API-Aufrufe kommunizieren, so dass der Server Ressourcen bereitstellt und die Web-App sich um die Verwendung dieser Ressource kümmert.

  3. Im Falle einer fehlenden Ressource darf der Server immer noch nicht mit einer separaten Seite antworten, er sollte trotzdem mit einer Nachricht antworten, die die Web-App verwenden kann.

  

Ich habe eine einseitige Anwendung in Vue.js erstellt, die den HTML5 History-Modus für das Routing verwendet

Ich glaube, Sie verwenden den Vue-Router , der simuliert, dass die Single-Page-App eine Vollfunktions-Multi ist -Seitenanwendung.

Vielleicht möchten Sie dies und dies , aber das obige gilt für eine einzelne Seite Anwendung.

Sie haben Ihre URL-Muster geteilt:

%Vor%
  

Aber andere URLs wie die Medien oder statische URLs zeigen auch auf den gleichen Fang aller Muster Regex. Wie kann ich dieses Problem lösen?

  1. Eine Möglichkeit, die Sie verwalten können, wäre entweder, indem Sie auf einer anderen Route als '/' wie oben für /app angegeben dienen.

    %Vor%

    und in Ihrer Datei router.js:

    %Vor%
  2. Oder den von den URLs bedienten Zweck voranstellen wie

    %Vor%
Amresh Venugopal 17.03.2017 18:44
quelle
0

Da index.html als Vorlage dient (eine dynamische Seite), weil es von Ihren Ansichten aus bedient wird, anstatt statisch, wird das ein bisschen komisch.

Verwenden Sie zur Produktion definitiv nginx oder apache, um den statischen Inhalt auf ähnliche Weise zu bedienen.

Für die Entwicklung würde ich Folgendes tun:

%Vor%     
Kenneth 20.10.2017 02:46
quelle