您的位置:首页 > 编程语言 > Go语言

Django 1.5.4 专题18 User Profile

2013-10-14 15:15 330 查看
一.创建app

django-admin.py startapp userprofile

二.在settings.py中添加app





二.添加userprofile/models.py的内容如下

from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver

import logging
logr = logging.getLogger(__name__)

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    likes_cheese = models.BooleanField()
    favourite_hamster_name = models.CharField(max_length=50)
    
    
User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])

@receiver(post_save, sender=User)
def make_sure_user_profile_is_added_on_user_created(sender, **kwargs):
    if kwargs.get('created', False):
        up = UserProfile.objects.create(user=kwargs.get('instance'))
        logr.debug("UserProfile created: %s" % up)

三.修改userprofile/forms.py的内容如下

from django import forms
from models import UserProfile

class UserProfileForm(forms.ModelForm):
    
    class Meta:
        model = UserProfile 
        fields = ('likes_cheese', 'favourite_hamster_name')


四.修改userprofile/templates/profile.html的内容如下

{% extends "base.html" %}

{% block content %}
  
  <h2>Profile</h2>
  
  {% for field in form %}
    {{field.error}}

  {% endfor %}
  
  <form action="/accounts/profile/" method="post">{% csrf_token %}
  {{form.as_ul}}
  
  <input type="submit" value="Update" />
    
  </form>
  
{% endblock %}

五.修改userprofile/urls.py的内容如下

from django.conf.urls import patterns, include, url

urlpatterns = patterns('',
        url(r'^profile/$', 'userprofile.views.user_profile'),
)

六.修改django_test/urls.py的内容如下



七.修改userprofile/views.py的内容如下

from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from django.core.context_processors import csrf
from forms import UserProfileForm
from django.contrib.auth.decorators import login_required

@login_required
def user_profile(request):
    if request.method == 'POST':
        form = UserProfileForm(request.POST, instance=request.user.profile)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/accounts/loggedin')
    else:
        user = request.user
        profile = user.profile
        form = UserProfileForm(instance=profile)
        
    args = {}
    args.update(csrf(request))
    
    args['form'] = form
    
    return render_to_response('profile.html', args)


八.修改django_test/templates/loggedin.html的内容如下

{% extends "base.html" %}

{% block content %}

  <h2>Hi {{full_name}} you are now logged in!</h2>
  <p>Click <a href="/accounts/logout/">here</a> to logout.</p>
  
  <p>Click <a href="/accounts/profile/">here</a> to edit your profile information</p>

{% endblock %}

./manage.py migrate效果如图



修改database

./manage.py migrate
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: