2017-09-07 1 views
0

Dans wagtail/django comment créer un wagtail Page model de base, créer le modèle html, puis dire à ce modèle de servir de vue pour une URL spécifique?Comment donner à une page wagtail/django une URL personnalisée pour servir?

from django.db import models 
from wagtail.wagtailcore.models import Page 

class MyPage(Page): 
    title = models.CharField(blank=True, null=True, max_length=255) 
    #... 

Je veux l'URL pour vous inscrire comme

url(r'^monkey/(?P<slug>[A-Za-z0-9]+)$', ...) 

Mais je n'ai pas un dossier commun urls.py son stockée en dehors du projet. J'ai essayé d'utiliser le RoutablePageMixin, mais je crois que cela sert pour les sous-pages. Je sais également où stocker le modèle html dans la structure de sorte que ce n'est pas un problème.

+0

Pourriez-vous donner plus de détails sur les raisons pour lesquelles vous n'avez pas accès à urls.py? C'est une partie standard de tout projet Django, et vous allez être coincé si vous ne pouvez pas le modifier. – gasman

Répondre

0

Vous avez ou de faire la structure du projet comme ci-dessous:

project 
| 
|------project 
|   | 
|   |-------settings.py 
|   |-------urls.py 
|   |-------wsgi.py 
| 
|------app 
|  |------migrations 
|  |------static 
|  |------templates 
|  |------models.py 
|  |------urls.py 
|  |------views.py 
| 
|------another app 
     |------ 
     | 

maintenant

projet

urls.py

from django.conf.urls import url,include 
from django.contrib import admin 

urlpatterns = [ 
    # urls to go to app 
    url(r'^app/', include('app.urls')), 

    #more apps 

    url(r'^admin/', admin.site.urls), 
] 

app urls.py

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^$', views.apphome, name='apphome'), 
    url(r'^monkey/(?P<slug>[A-Za-z0-9]+)$', .....) 
] 

Donc, maintenant vous avez un urls.py central et vous pouvez avoir urls.py pour chaque application et qui rend lisse l'écoulement.

Espérons que ça aide !!!

+0

@goosefrumps, Si la solution a fonctionné pour vous. S'il vous plaît sélectionner la réponse d'autre si un problème me le faire savoir via les commentaires ci-dessous. Merci pour toute la coopération. –