mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-02-18 04:20:53 +03:00
Login/Logout and FlyWheel API link in HTML emitter - Add templates, quote next value, only use login/logout if settings.LOGIN_URL and settings.LOGOUT_URL are in urlconf
This commit is contained in:
parent
216baa551f
commit
e9168b508b
7
examples/templates/base.html
Normal file
7
examples/templates/base.html
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
{% block content %}{% endblock %}
|
||||||
|
</body>
|
||||||
|
</html>
|
26
examples/templates/registration/login.html
Normal file
26
examples/templates/registration/login.html
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
{% if form.errors %}
|
||||||
|
<p>Your username and password didn't match. Please try again.</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<form method="post" action="{% url django.contrib.auth.views.login %}">
|
||||||
|
{% csrf_token %}
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>{{ form.username.label_tag }}</td>
|
||||||
|
<td>{{ form.username }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{{ form.password.label_tag }}</td>
|
||||||
|
<td>{{ form.password }}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<input type="submit" value="login" />
|
||||||
|
<input type="hidden" name="next" value="{{ next }}" />
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% endblock %}
|
|
@ -3,8 +3,9 @@ from django.template import RequestContext, loader
|
||||||
from django import forms
|
from django import forms
|
||||||
|
|
||||||
from flywheel.response import NoContent
|
from flywheel.response import NoContent
|
||||||
|
from flywheel.utils import dict2xml, url_resolves
|
||||||
|
|
||||||
from utils import dict2xml, url_resolves
|
from urllib import quote_plus
|
||||||
import string
|
import string
|
||||||
try:
|
try:
|
||||||
import json
|
import json
|
||||||
|
@ -121,8 +122,8 @@ class DocumentingTemplateEmitter(BaseEmitter):
|
||||||
form_instance = self._get_form_instance(self.resource)
|
form_instance = self._get_form_instance(self.resource)
|
||||||
|
|
||||||
if url_resolves(settings.LOGIN_URL) and url_resolves(settings.LOGOUT_URL):
|
if url_resolves(settings.LOGIN_URL) and url_resolves(settings.LOGOUT_URL):
|
||||||
login_url = "%s?next=%s" % (settings.LOGIN_URL, self.resource.request.path)
|
login_url = "%s?next=%s" % (settings.LOGIN_URL, quote_plus(self.resource.request.path))
|
||||||
logout_url = "%s?next=%s" % (settings.LOGOUT_URL, self.resource.request.path)
|
logout_url = "%s?next=%s" % (settings.LOGOUT_URL, quote_plus(self.resource.request.path))
|
||||||
else:
|
else:
|
||||||
login_url = None
|
login_url = None
|
||||||
logout_url = None
|
logout_url = None
|
||||||
|
|
|
@ -36,11 +36,11 @@
|
||||||
|
|
||||||
{% if 'GET' in resource.allowed_methods %}
|
{% if 'GET' in resource.allowed_methods %}
|
||||||
<div class='action'>
|
<div class='action'>
|
||||||
<a href='{{ request.path }}'>GET</a>
|
<a href='{{ request.path }}' rel="nofollow">GET</a>
|
||||||
<ul class="accepttypes">
|
<ul class="accepttypes">
|
||||||
{% for media_type in resource.emitted_media_types %}
|
{% for media_type in resource.emitted_media_types %}
|
||||||
{% with resource.ACCEPT_QUERY_PARAM|add:"="|add:media_type as param %}
|
{% with resource.ACCEPT_QUERY_PARAM|add:"="|add:media_type as param %}
|
||||||
<li>[<a href='{{ request.path|add_query_param:param }}'>{{ media_type }}</a>]</li>
|
<li>[<a href='{{ request.path|add_query_param:param }} rel="nofollow"'>{{ media_type }}</a>]</li>
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -33,7 +33,7 @@ html_gunk_re = re.compile(r'(?:<br clear="all">|<i><\/i>|<b><\/b>|<em><\/em>|<st
|
||||||
hard_coded_bullets_re = re.compile(r'((?:<p>(?:%s).*?[a-zA-Z].*?</p>\s*)+)' % '|'.join([re.escape(x) for x in DOTS]), re.DOTALL)
|
hard_coded_bullets_re = re.compile(r'((?:<p>(?:%s).*?[a-zA-Z].*?</p>\s*)+)' % '|'.join([re.escape(x) for x in DOTS]), re.DOTALL)
|
||||||
trailing_empty_content_re = re.compile(r'(?:<p>(?: |\s|<br \/>)*?</p>\s*)+\Z')
|
trailing_empty_content_re = re.compile(r'(?:<p>(?: |\s|<br \/>)*?</p>\s*)+\Z')
|
||||||
|
|
||||||
def urlize_quoted_links(text, trim_url_limit=None, nofollow=False, autoescape=True):
|
def urlize_quoted_links(text, trim_url_limit=None, nofollow=True, autoescape=True):
|
||||||
"""
|
"""
|
||||||
Converts any URLs in text into clickable links.
|
Converts any URLs in text into clickable links.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user