mirror of
				https://github.com/encode/django-rest-framework.git
				synced 2025-10-31 07:57:55 +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