Ah, now I see I've erred. I understood better after re-doing the Django tutorial.
On Tuesday, November 7, 2017 at 5:48:20 PM UTC-5, Rainell Dilou Gómez wrote: > > You have got a 404 because you are using get_object_or_404, the behavior > of the method is implicit in its name: get object or 404. So if the > generated queryset does not find in the database table a record that > matches the arguments that you are passing (slug and status), that is, if > not get an object, the 404 will be generated. > Regarding the directories structure and the templates declarations, I > suggest you study the Django documentation. See also the tutorial to > create your first application > <https://docs.djangoproject.com/en/1.11/intro/tutorial01/>. > > Il giorno domenica 5 novembre 2017 00:35:50 UTC+1, Tom Tanner ha scritto: >> >> Hey everyone, >> >> When I go to `http://127.0.0.1:8000/projects/some-slug` >> <http://127.0.0.1:8000/projects/some-slug>, I want Mezzanine to fetch >> the `project_detail.html` template, which would include `some-slug.html`. >> How do I do this? >> >> Here's `urls.py`. >> url("^projects/(?P<slug>.*)%s$" % _slash, project_detail, name= >> "project_detail"), >> >> >> >> `models.py`. >> class ProjectLinkPage(Displayable) >> ''' >> A page representing the format of the page that >> has links to standalone, projectlink projectlinks >> ''' >> >> >> # Fields and `class Meta`, etc... >> >> >> @models.permalink >> def get_absolute_url(self): >> return ("project_detail", (), {"slug": self.slug}) >> >> >> `views.py` >> def project_detail(request, slug, template="projects/project_detail.html" >> , extra_context=None): >> ''' >> Custom templates are checked for by using the name >> `projects/project_detail/XXX.html`` where `XXX` is the project slug. >> ''' >> >> >> project = get_object_or_404(Project, slug=slug, status=2) >> context = { >> "project": project, >> "editable_obj": project >> } >> context.update(extra_context or {}) >> templates = [u"projects/project_detail/%s.html" % str(slug), template] >> return TemplateResponse(request, templates, context) >> >> `project_detail.html` >> {% extends "base.html" %} >> {% load mezzanine_tags keyword_tags %} >> >> >> {% block meta_title %} >> {{ project.meta_title }} >> {% endblock %} >> >> >> {% block meta_keywords %} >> {% metablock %} >> {% keywords_for project as tags %} >> {% for tag in tags %}{% if not forloop.first %}, {% endif %}{{ tag }}{% >> endfor %} >> {% endmetablock %} >> {% endblock %} >> >> >> {% block meta_description %} >> {% metablock %}{{ project.description }}{% endmetablock %} >> {% endblock %} >> >> >> {% block title %} >> {{ project.title }} >> {% endblock %} >> >> >> {% block main %} >> {{ project.content }} >> {% endblock %} >> >> But I'm not sure where to go from here. How do I transfer the slug to >> `project_detail.html` so it knows where to look? In this case, I'd have a >> folder named `slugs` in the same directory as `project_detail.html`. And >> `slugs` would have templates named after slugs. >> > -- You received this message because you are subscribed to the Google Groups "Mezzanine Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
