This commit is contained in:
Daniel Ryan 2014-10-17 14:56:04 +00:00
commit 4fd458f625
9 changed files with 73 additions and 925 deletions

View File

@ -162,6 +162,10 @@ class Field(object):
attrs = {}
if 'id' not in self.widget.attrs:
attrs['id'] = self._name
if 'class' not in self.widget.attrs:
attrs['class'] = 'form-control'
elif attrs['class'].find('form-control') == -1:
attrs['class'] += ' form-control'
return self.widget.render(self._name, self._value, attrs=attrs)

View File

@ -10,12 +10,13 @@ a single block in the template.
background: transparent;
border-top-color: transparent;
padding-top: 0;
text-align: right;
}
.navbar-inverse .brand a {
.navbar-inverse .navbar-brand a {
color: #999999;
}
.navbar-inverse .brand:hover a {
.navbar-inverse .navbar-brand:hover a {
color: white;
text-decoration: none;
}
@ -29,7 +30,7 @@ a single block in the template.
z-index: 3;
}
.navbar .navbar-inner {
.navbar-inverse {
background: #2C2C2C;
color: white;
border: none;
@ -37,7 +38,7 @@ a single block in the template.
border-radius: 0px;
}
.navbar .navbar-inner .nav li, .navbar .navbar-inner .nav li a, .navbar .navbar-inner .brand:hover {
.navbar .navbar-nav li, .navbar .navbar-nav li a, .navbar .navbar-brand:hover {
color: white;
}
@ -45,11 +46,11 @@ a single block in the template.
background: #2C2C2C;
}
.navbar .navbar-inner .dropdown-menu li a, .navbar .navbar-inner .dropdown-menu li {
.navbar .dropdown-menu li a, .navbar .dropdown-menu li {
color: #A30000;
}
.navbar .navbar-inner .dropdown-menu li a:hover {
.navbar .dropdown-menu li a:hover {
background: #EEEEEE;
color: #C20000;
}
@ -61,11 +62,6 @@ html {
background: none;
}
body, .navbar .navbar-inner .container-fluid {
max-width: 1150px;
margin: 0 auto;
}
body {
background: url("../img/grid.png") repeat-x;
background-attachment: fixed;

File diff suppressed because one or more lines are too long

View File

@ -36,6 +36,10 @@ ul.breadcrumb {
margin: 80px 0 0 0;
}
.container ul.breadcrumb {
margin-top: 0;
}
form select, form input, form textarea {
width: 90%;
}

View File

@ -26,22 +26,21 @@
</head>
{% block body %}
<body class="{% block bodyclass %}{% endblock %} container">
<body class="{% block bodyclass %}{% endblock %}">
<div class="wrapper">
{% block navbar %}
<div class="navbar {% block bootstrap_navbar_variant %}navbar-inverse{% endblock %}">
<div class="navbar-inner">
<div class="container-fluid">
<div class="navbar navbar-static-top {% block bootstrap_navbar_variant %}navbar-inverse{% endblock %}">
<div class="container">
<span>
{% block branding %}
<a class='brand' rel="nofollow" href='http://www.django-rest-framework.org'>
<a class='navbar-brand' rel="nofollow" href='http://www.django-rest-framework.org'>
Django REST framework <span class="version">{{ version }}</span>
</a>
{% endblock %}
</span>
<ul class="nav pull-right">
<ul class="nav navbar-nav pull-right">
{% block userlinks %}
{% if user.is_authenticated %}
{% optional_logout request user %}
@ -52,18 +51,21 @@
</ul>
</div>
</div>
</div>
{% endblock %}
<div class="container">
{% block breadcrumbs %}
<ul class="breadcrumb">
{% for breadcrumb_name, breadcrumb_url in breadcrumblist %}
{% if forloop.last %}
<li class="active">{{ breadcrumb_name }}</li>
{% else %}
<li>
<a href="{{ breadcrumb_url }}" {% if forloop.last %}class="active"{% endif %}>
<a href="{{ breadcrumb_url }}">
{{ breadcrumb_name }}
</a>
{% if not forloop.last %}<span class="divider">&rsaquo;</span>{% endif %}
</li>
{% endif %}
{% endfor %}
</ul>
{% endblock %}
@ -238,6 +240,7 @@
{% endif %}
</div>
<!-- END Content -->
</div><!-- /.container -->
<footer>
{% block footer %}

View File

@ -3,9 +3,9 @@
{{ form.non_field_errors }}
{% for field in form.fields.values %}
{% if not field.read_only %}
<div class="control-group {% if field.errors %}error{% endif %}">
{{ field.label_tag|add_class:"control-label" }}
<div class="controls">
<div class="form-group {% if field.errors %}has-error{% endif %}">
{{ field.label_tag|add_class:"control-label col-md-3" }}
<div class="controls col-md-9">
{{ field.widget_html }}
{% if field.help_text %}<span class="help-block">{{ field.help_text }}</span>{% endif %}
{% for error in field.errors %}<span class="help-block">{{ error }}</span>{% endfor %}

View File

@ -7,62 +7,39 @@
<body class="container">
<div class="container-fluid" style="margin-top: 30px">
<div class="row-fluid">
<div class="row">
<div class="well" style="width: 320px; margin-left: auto; margin-right: auto">
<div class="row-fluid">
<div class="row">
<div>
{% block branding %}<h3 style="margin: 0 0 20px;">Django REST framework</h3>{% endblock %}
</div>
</div><!-- /row fluid -->
<div class="row-fluid">
<div class="row">
<div>
<form action="{% url 'rest_framework:login' %}" role="form" method="post">
<form action="{% url 'rest_framework:login' %}" class=" form-inline" method="post">
{% csrf_token %}
<div id="div_id_username"
class="clearfix control-group {% if form.username.errors %}error{% endif %}">
<div id="div_id_username" class="clearfix form-group">
<div class="controls">
<Label class="span4">Username:</label>
<input style="height: 25px" type="text" name="username" maxlength="100"
autocapitalize="off"
autocorrect="off" class="span12 textinput textInput"
id="id_username" required
{% if form.username.value %}value="{{ form.username.value }}"{% endif %}>
{% if form.username.errors %}
<p class="text-error">
{{ form.username.errors|striptags }}
</p>
{% endif %}
<Label class="col-md-4">Username:</label>
<input style="height: 25px" type="text" name="username" maxlength="100" autocapitalize="off" autocorrect="off" class="textinput textInput" id="id_username">
</div>
</div>
<div id="div_id_password"
class="clearfix control-group {% if form.password.errors %}error{% endif %}">
<div id="div_id_password" class="clearfix form-group">
<div class="controls">
<Label class="span4">Password:</label>
<input style="height: 25px" type="password" name="password" maxlength="100"
autocapitalize="off" autocorrect="off" class="span12 textinput textInput"
id="id_password" required>
{% if form.password.errors %}
<p class="text-error">
{{ form.password.errors|striptags }}
</p>
{% endif %}
<Label class="col-md-4">Password:</label>
<input style="height: 25px" type="password" name="password" maxlength="100" autocapitalize="off" autocorrect="off" class="textinput textInput" id="id_password">
</div>
</div>
<input type="hidden" name="next" value="{{ next }}" />
{% if form.non_field_errors %}
{% for error in form.non_field_errors %}
<div class="well well-small text-error" style="border: none">{{ error }}</div>
{% endfor %}
{% endif %}
<div class="form-actions-no-box">
<input type="submit" name="submit" value="Log in" class="btn btn-primary" id="submit-id-submit">
</div>
</form>
</div>
</div><!-- /.row-fluid -->
</div><!-- /.row -->
</div><!--/.well-->
</div><!-- /.row-fluid -->
</div><!-- /.row -->
</div><!-- /.container-fluid -->
</body>
{% endblock %}

View File

@ -2,9 +2,9 @@
{% csrf_token %}
{{ form.non_field_errors }}
{% for field in form %}
<div class="control-group">
{{ field.label_tag|add_class:"control-label" }}
<div class="controls">
<div class="form-group">
{{ field.label_tag|add_class:"control-label col-md-3" }}
<div class="controls col-md-9">
{{ field }}
<span class="help-block">{{ field.help_text }}</span>
</div>

View File

@ -142,7 +142,7 @@ class SessionAuthTests(TestCase):
cf. [#1810](https://github.com/tomchristie/django-rest-framework/pull/1810)
"""
response = self.csrf_client.get('/auth/login/')
self.assertContains(response, '<Label class="span4">Username:</label>')
self.assertContains(response, '<Label class="col-md-4">Username:</label>')
def test_post_form_session_auth_failing_csrf(self):
"""