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.
