2011-07-21 34 views
5

Tôi đang cố gắng sử dụng email cho tên người dùng và làm cho nó hoạt động gần như hoàn hảo. Tôi đã làm theo các hướng dẫn sau: http://www.micahcarrick.com/django-email-authentication.htmlBuộc Biểu mẫu đăng nhập Django để có tên người dùng trên 30 ký tự

Vấn đề là, biểu mẫu đăng nhập của tôi vẫn đang ném lỗi cho biết tên người dùng chỉ có thể là 30 ký tự. Tôi đã thay đổi hình thức đầu vào để chấp nhận 75 ký tự và bảng cơ sở dữ liệu là tốt. Nhưng một cái gì đó trong Django vẫn đang ngăn chặn điều này.

Bất kỳ ý tưởng nào?

UPDATE:

<form method="post" action="." class="full"> 
{% csrf_token %} 
<ul> 
    {% if form.non_field_errors %}<li>{{ form.non_field_errors }}</li>{% endif %} 
    <li> 
     {{ form.username.errors }} 
     <label for="id_username">Email/Username</label> 
     <input type="text" id="id_username" name="username" maxlength="75"> 
    </li> 
    <li> 
     {{ form.password.errors }} 
     <label for="id_password">{{ form.password.label }}</label> 
     {{ form.password }} 
    </li> 
</ul> 
<input type="submit" value="Login"> 
<a href="{% url django.contrib.auth.views.password_reset %}">Forgot your password?</a> 
</form> 
+0

@Brenden: Chính xác trong bản sửa đổi 'Biểu mẫu' bạn đang sử dụng là gì? Vui lòng ** cập nhật ** câu hỏi để bao gồm lớp Biểu mẫu. Có phương pháp 'sạch' nào sẽ cắt ngắn đầu vào? –

+1

Chỉ cần kiểm tra, bạn đã thay đổi độ dài trường của tên người dùng trong django.contrib.auth.models.User từ 30 đến 75, sau đó thả bảng auth cũ từ db, lấy SQL tươi để tạo bảng auth bằng cách chạy quản lý. py sqlall, và thực hiện câu lệnh SQL này để tạo bảng mới với độ dài trường được cập nhật? –

Trả lời

4

Cuối cùng, tôi cố định này bằng cách thêm này để cấp cao nhất của tôi init

# Added so the login field can take email addresses longer than 30 characters 
from django.contrib.auth.forms import AuthenticationForm 

AuthenticationForm.base_fields['username'].max_length = 150 
AuthenticationForm.base_fields['username'].widget.attrs['maxlength'] = 150 
AuthenticationForm.base_fields['username'].validators[0].limit_value = 150 
0

Chỉ cần để kiểm tra, anh có thay đổi độ dài lĩnh vực tên trong django.contrib.auth.models.User 30-75, sau đó thả bảng auth cũ từ db, lấy SQL mới để tạo bảng auth bằng cách chạy manage.py sqlall và thực thi câu lệnh SQL này để tạo bảng mới với độ dài trường được cập nhật?

(Vì đây chỉ là một câu hỏi theo dõi, tôi muốn rời khỏi nó trong một chú thích nhưng không có khá đủ đại diện chưa ...)

+1

Tôi nghĩ rằng các bước mất tích đang thay đổi người dùng từ 30 đến 75 trong django.contrib.auth.models .. Tôi sẽ đặt mã mà sẽ làm điều đó mà không cần phải chạm vào mã django thực tế? – Brenden

Các vấn đề liên quan