2014-10-29 18 views
7

Tôi đã đọc rất nhiều câu hỏi và câu trả lời về vấn đề này, nhưng vẫn không có may mắn. Ví dụ here là một câu trả lời tuyệt vời nhưng hầu hết có thể không áp dụng cho đăng ký django 1.0.Cách thêm các trường phụ (tùy chỉnh) trong đăng ký Django 1.0

Mục tiêu của tôi là thêm hai trường tùy chỉnh, cụ thể là tổ chứcvị trí trong biểu mẫu đăng ký. Lưu ý: Tôi đang sử dụng đăng ký django một bước được cung cấp bởi registration.backend.simple.

+0

tại sao bạn nói câu trả lời không áp dụng cho django đăng ký 1.0? –

+0

@ChrisHawkes Tôi nhận được lỗi "không thể nhập tên đăng ký". Tôi nghĩ rằng đăng ký bị tước trong đăng ký django 1.0. Và tôi đã thử sử dụng "url (r '^ register/$', RegistrationView.as_view (form_class = UserRegForm))". Nhưng vẫn không có may mắn – Iqbal

+0

theo một trong những câu trả lời được cung cấp để sửa lỗi đó với phiên bản mới của đăng ký django bạn phải thêm này, từ django.conf.urls mẫu nhập, bao gồm, url từ registration.backends .default.views nhập khẩu RegistrationView từ abby.apps.accounts.forms nhập UserRegForm urlpatterns = mẫu ('', url (r '^ đăng ký/$', RegistrationView.as_view (form_class = UserRegForm)), ) http://stackoverflow.com/questions/14726725/python-django-django-registration-add-an-extra-field/16366997#16366997 –

Trả lời

0

Vì bạn chưa có câu trả lời, tôi đang cung cấp câu trả lời này, mặc dù nó không chính xác những gì bạn đang yêu cầu. Tôi nghĩ rằng nó có thể giúp bạn anyway, mặc dù ...

Đây là cách tôi đã thực hiện nó trong một vài dự án sử dụng django-đăng ký 1.0, Python 2.7 và Django 1.6. Trong trường hợp này, tôi chỉ sử dụng username, emailpassword để đăng ký và sau đó người dùng có thể thêm các trường hồ sơ sau khi họ đã đăng ký. Nó không phải là quá khó khăn để sửa đổi điều này để chấp nhận các lĩnh vực sau khi đăng ký.

Tôi sử dụng Twitter Bootstrap để tạo kiểu, vì vậy các mẫu của tôi có thể hoặc không thể giúp bạn. Tôi bỏ chúng ra trong trường hợp này.

Tôi tạo ra một vài ứng dụng được gọi là accountsauthentication giữ mô hình của tôi, hình thức và quan điểm:

accounts.models.UserProfile

from django.db import models 

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    title = models.CharField(max_length=100) 
    company = models.CharField(max_length=250) 

authentiction.forms.EditUserProfileForm

from django.forms import ModelForm 

class EditUserProfileForm(ModelForm):** 
    . . . 
    title = forms.CharField(widget=forms.TextInput()) 
    company = forms.CharField(widget=forms.TextInput()) 
    . . . 

accounts.views.EditUserProfileView

from django.views.generic.base import View 
from django.utils.decorators import method_decorator 
from django.contrib.auth.decorators import login_required 
from django.shortcuts import render, get_object_or_404 
from django.http import HttpResponseRedirect 

from .models import UserProfile 
from .forms import EditUserProfileForm 

class EditUserProfileView(View): 

    form_class = EditUserProfileForm 
    template_name = 'accounts/profile_edit.html' 

    @method_decorator(login_required) 
    def get(self, request, *args, **kwargs): 

     profile = get_object_or_404(UserProfile, user=request.user) 

     form_dict = { 
      'title': profile.title, 
      'company': profile.company, 
     } 

     form = self.form_class(form_dict) 

     return render(request, self.template_name, { 
      'form': form, 
      'profile': profile, 
     }) 

    @method_decorator(login_required) 
    def post(self, request, *args, **kwargs): 

     profile = get_object_or_404(UserProfile, user=request.user) 

     form = self.form_class(request.POST, instance=profile) 

     if form.is_valid(): 

      company = form.cleaned_data['company'] 
      title = form.cleaned_data['title'] 

      title.company = title 
      profile.company = company 

      # you might need to save user too, depending on what fields 
      request.user.save() 
      profile.save() 

      return HttpResponseRedirect('/dashboard/') 

     return render(request, self.template_name, {'form': form}) 

project.urls

url(r'^accounts/profile/edit/', EditUserProfileView.as_view(), name='edit_user_profile_view'), 
Các vấn đề liên quan