Custom views¶
The simplest way to access to the default standard views of Postman is to include the provided URLconf module. This can be done in the root URLconf of the site:
path('messages/', include('postman.urls', namespace='postman')),
If you want customized views, make a copy of the original module to another location (for example, your main application or the project root), reference it in the root URLconf, and tune the parameters in the view calls.
Example:
# in mysite/urls.py
# ...
path('messages/', include('mysite.postman_urls', namespace='postman')),
# in mysite/postman_urls.py
# ...
# from postman.views import ...
# ...
urlpatterns = [
# ...
# re_path(… ✂ …View.as_view(... add parameters here ...),… ✂ …
# ...
]
styles¶
Here is a sample of some CSS rules, usable for postman/views.html:
.pm_message.pm_deleted { text-decoration: line-through; }
.pm_message.pm_deleted .pm_body { display: none; }
.pm_message.pm_archived { font-style: italic; color: grey; }
.pm_message.pm_unread .pm_subject { font-weight: bolder; }
.pm_message.pm_pending .pm_header { background-color: #FFC; }
.pm_message.pm_rejected .pm_header { background-color: #FDD; }
These rules are provided with the application, as an example, in a static file (See Static Files).
forms¶
You can replace the default forms in views.
Examples:
urlpatterns = [
# ...
re_path(r'… ✂ …',
WriteView.as_view(form_classes=(MyCustomWriteForm, MyCustomAnonymousWriteForm)),
name='write'),
re_path(r'… ✂ …',
ReplyView.as_view(form_class=MyCustomFullReplyForm),
name='reply'),
re_path(r'… ✂ …',
MessageView.as_view(form_class=MyCustomQuickReplyForm),
name='view'),
# ...
]
templates¶
You can replace the default template name in all views.
Example:
urlpatterns = [
# ...
re_path(r'… ✂ …',
MessageView.as_view(template_name='my_custom_view.html'),
name='view'),
# ...
]
after submission¶
You can supersede the default view where to return to, after a successful submission.
The default algorithm is:
Return where you came from
If it cannot be known, fall back to the inbox view
But if the submission view has a
success_urlparameter, use it preferablyIn all cases, a
nextparameter in the query string has higher precedence
The parameter success_url is available to these views:
WriteViewReplyViewArchiveViewDeleteViewUndeleteViewMarkReadViewMarkUnreadView
Example:
urlpatterns = [
# ...
re_path(r'… ✂ …',
ReplyView.as_view(success_url='postman:inbox'), name='reply'),
# ...
]
Example:
<a href="{% url 'postman:reply' reply_to_pk %}?next={{ next_url|urlencode }}">Reply</a>