Django 1.5.4 专题18 User Profile

来源:互联网 发布:查询数据库所有表 编辑:程序博客网 时间:2024/05/16 11:25

一.创建app

django-admin.py startapp userprofile

二.在settings.py中添加app

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

from django.db import modelsfrom django.contrib.auth.models import Userfrom django.db.models.signals import post_savefrom django.dispatch import receiverimport logginglogr = 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 formsfrom models import UserProfileclass 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, urlurlpatterns = patterns('',        url(r'^profile/$', 'userprofile.views.user_profile'),)
六.修改django_test/urls.py的内容如下


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

from django.shortcuts import render_to_responsefrom django.http import HttpResponseRedirectfrom django.core.context_processors import csrffrom forms import UserProfileFormfrom django.contrib.auth.decorators import login_required@login_requireddef 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



原创粉丝点击