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
- Django 1.5.4 专题18 User Profile
- Django设置User Profile
- 非profile方式扩展Django User Model
- Django使用Profile扩展User模块
- Django 1.5.4 专题18 Custom template tags
- Django 中如何给 User 增加额外的 Profile 信息
- Django 1.5.4 专题一 入门
- Django 1.5.4 专题四 Template 提高
- Django 1.5.4 专题七 register
- Django 1.5.4 专题八 Model
- Django 1.5.4 专题十 database relationships
- Django 1.5.4 专题15 south
- Django 1.5.4 专题16 logging
- Django 1.5.4 专题17 Form Service
- Django 1.5.4 专题19 heroku s3
- Django 1.5.4 专题20 fabric
- Django 1.5.4 专题21 haystack whoosh
- Django 1.5.4 专题22 Signals
- 学用 html5 canvas 与 javascript 开发画图程序
- android中一种欢迎界面模式
- 命令行中有空格不能执行
- Android 软件自动更新功能的实现
- Spring源码解析之:Spring Security启动细节和工作模式
- Django 1.5.4 专题18 User Profile
- unity 3d与ios代码相互调用
- 获取状态栏高度
- 实现抽屉方式的两种方法【未完成】
- 大厅里有100盏灯,每盏灯都编了号码,分别为1-100。每盏灯由一个开关来控制。
- linux之sed用法
- ffmpeg SDK开发手册
- Android 权限代码说明
- 2013-10-26笔记