#23535 closed Cleanup/optimization (fixed)
Clarify presence of default filter in tutorial 2
Reported by: | Jure Erznožnik | Owned by: | nobody |
---|---|---|---|
Component: | Documentation | Version: | 1.7 |
Severity: | Normal | Keywords: | tutorial, templates |
Cc: | Triage Stage: | Accepted | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | yes | UI/UX: | no |
Description
I'm running through tutorials @ django sprint PyConUK and I just had a bit of a problem with the section "Customize the admin look and feel" (https://docs.djangoproject.com/en/1.7/intro/tutorial02/).
In the tutorial, it says: "Then, just edit the file and replace {{ site_header }} with your own site’s name as you see fit."
There are two issues with this:
- the tag in base_site.html itself is actually {{ site_header|default:_('Django administration') }}
- changing the default part (default:_('Django administration')) doesn't work since the site_header variable is actually defined.
The documentation mentions the site_header variable location in the same paragraph, but for a new user (such as myself) it is not immediately obvious what the entire thing means.
I would like to discuss two issues regarding this:
- The necessity of the default: specification in the template itself (Daniele Procida's suggestion)
- Appropriate change in the documentation where the text would be more specific about what to change
Argumentation for issue 1:
The default: specification may not even be necessary since the site_header variable is declared by default and automatically works. Setting it to None or even deleting it seems like a pretty stupid idea, so I would argue that the default: spec in the template might be redundant. I have not tested how the framework reacts to the variable not being defined or None though.
I propose to fix this by editing the template to remove the default: specifications both for site_title and site_header variables.
Argumentation for issue 2:
I propose to change the text of this paragraph to:
Then, just edit the file and replace {{ site_header }} tag with your own site’s name as you see fit. Note that in the template, the tag itself also contains a default specification for when the site_header variable wouldn't be defined. Since the variable IS defined, you have to replace the entire tag text with your own, to e.g. {{_('Polls administration') }}
Note: We use this approach to teach you how to override templates. In an actual project, you would probably use the django.contrib.admin.AdminSite.site_header attribute to more easily make this particular customization.
Change History (4)
comment:1 by , 10 years ago
Summary: | A bit vague instructions about modifying templates in tutorial 2 → Clarify presence of default filter in tutorial 2 |
---|---|
Triage Stage: | Unreviewed → Accepted |
comment:2 by , 10 years ago
I created a pull request 3258.
https://github.com/django/django/pull/3258
It contains modification for docs only as proposed in the original ticket.
comment:3 by , 10 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
You can use git blame to find the commit that added the
default
filter to the template ([5ea34f3f]). It should stay, but a documentation update for the second issue would be welcome.