Django 1.7旧样式自定义用户模型

诺纳玛

您能帮我使用Django和自定义用户模型吗?我是Django世界的新手,因此我开始从最新的1.7版本开始学习。在我的项目中,我使用的是django-allauth软件包,我想在contrib.auth的标准用户类和我的自定义模型“ users”之间创建OneToOne关系。

 #models.py 

import datetime
from django.db import models
from django.contrib.auth.models import User

class Profile(models.Model):
    user=models.OneToOneField(User)
    f_name=models.CharField(null=True, blank=True, max_length='30')
    l_name=models.CharField(null=True, blank=True, max_length='30')
    birth_date=models.DateField(null=True, blank=True)
    company=models.CharField(null=True, blank=True, max_length='30')
    rate=models.FloatField(null=True, blank=True, default=0.0)
    skills=models.CharField(null=True, blank=True, max_length='255')
    bill_rate=models.CharField(null=True, blank=True, max_length='255')
    contacts=models.CharField(null=True, blank=True, max_length='255')
    portfolio=models.CharField(null=True, blank=True, max_length='127')
    avatar = models.ImageField(upload_to='/static/img/%Y/%m/%d', blank=True, null=True)

    def __unicode__(self):
        return self.user.username

这是forms.py

#forms.py
from django.forms import ModelForm
from users.models import Profile


class ProfileForm(ModelForm):

    class Meta:
        model = Profile
        fields = ('f_name', 'l_name', 'company', )

这是一个模板:

    {% extends "base_.html" %}

    {% block main_content%}
    <div>
    {% if user.is_authenticated %}
        <p>Welcome, {{  request.user.id }}!</p>
        <form id="profile_form" method="POST" action="/accounts/profile" enctype="multipart/form-data">
            {% csrf_token %}
            {{ profile_form.as_p }}
            <input type="submit" name="submit" value="Save" />
        </form>
    {% endif %}
    </div>
    {% endblock%}

还有views.py:

from django.http import HttpResponse
from django.template import RequestContext
from django.conf import settings
from django.shortcuts import render, render_to_response
from models import Profile
from forms import ProfileForm

def edit(request):
    profile_form = ProfileForm()
    user = request.user
    if request.method == 'POST':
        profile_form = ProfileForm(data=request.POST, instance=user)
        if profile_form.is_valid():
            profile = profile_form.save(commit=False)
            profile.user = user
            profile.save()
            return render_to_response("profile.html", RequestContext(request))

    return render_to_response('profile_edit.html', RequestContext(request, {'profile_form' : profile_form}))

我根据本教程构建了所有这些文件:http : //www.tangowithdjango.com/book/chapters/login.html

最后,所有这些工作正常,但是当我按“保存”按钮时,POST表单不起作用。我看不到数据库中的任何更改。重定向效果很好,实际上似乎一切正常,但是表中没有任何数据(顺便说一句,我正在使用postgres)。

我花了很多时间来找到答案,并尝试了互联网上的几乎所有内容,但是我仍然遇到这个问题。也许我无法从django文档中了解它的工作原理,但是我尝试了相同的方法,但是仍然有问题。

先感谢您!

更新:我的urls.py

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

urlpatterns = patterns('',
    # Examples:
    url(r'^$', 'laniakea.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
    url(r'^accounts/', include('allauth.urls')),
    url('accounts/profile', 'laniakea.views.prof', name='prof'),
    url(r'^edit', 'users.views.edit', name='edit'),
)
诺纳玛

我找到了解决方案!正如Daniel所说,我更改了“ action”属性,以将POST请求转换为相同的形式。而且我发现,我没有创建User父类的正确实例。实际上,我不需要使用它们。

#views.py

from django.template import RequestContext
from django.shortcuts import render
from models import Profile
from forms import ProfileForm

def edit(request):
    user = request.user
    if request.method == 'POST':
        profile_form = ProfileForm(request.POST)
        if profile_form.is_valid():
            profile = profile_form.save(commit=False)
            profile.user = user
            profile.save()
            return HttpResponseRedirect('accounts/profile')
    else:
        profile_form = ProfileForm()

    return render(request, 'profile_edit.html', {'profile_form' : profile_form})

#profile_edit.html

{% extends "base_.html" %}

{% block main_content%}
<div>
{% if user.is_authenticated %}
    <p>Welcome, {{  request.user.id }}!</p>
    <form id="profile_form" method="POST" action="" enctype="multipart/form-data">
        {% csrf_token %}
        {{ profile_form.as_p }}
        <input type="submit" name="submit" value="Save" />
    </form>
{% endif %}
</div>
{% endblock%}

非常感谢您的帮助和好运!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django(1.6)自定义用户模型

来自分类Dev

Django自定义用户模型

来自分类Dev

自定义 Django 用户模型

来自分类Dev

Django自定义用户模型与配置文件模型

来自分类Dev

使用Django的自定义用户模型(Django1.6)

来自分类Dev

Django:使用自定义用户模型创建超级用户

来自分类Dev

Django自定义Auth用户模型并重置迁移

来自分类Dev

django自定义用户模型密码未哈希

来自分类Dev

Django:自定义用户模型的返回字段

来自分类Dev

Django Rest框架未验证自定义用户模型

来自分类Dev

从自定义Django用户模型中删除密码

来自分类Dev

django 1.9不为自定义用户模型创建表

来自分类Dev

在Django中使用自定义用户模型时的RelatedObjectDoesNotExist

来自分类Dev

无法在Django中创建自定义用户模型

来自分类Dev

在Django中创建自定义用户模型的指南

来自分类Dev

1.8中的Django自定义用户模型

来自分类Dev

无法在Django中验证自定义用户模型

来自分类Dev

Django:迁移到自定义用户模型的问题

来自分类Dev

在Django中使用自定义用户模型时的RelatedObjectDoesNotExist

来自分类Dev

Django rest 自定义用户模型创建失败

来自分类Dev

Django Restful:如何更新我的自定义用户模型?

来自分类Dev

在django 1.8中将数据从原始用户模型迁移到自定义用户模型

来自分类Dev

自定义Django表单样式

来自分类Dev

具有django-polymorphic的Django自定义用户模型

来自分类Dev

使用自定义用户模型创建超级用户后,无法登录django admin

来自分类Dev

自定义Django用户模型-用户名作为主键属性

来自分类Dev

无法在Django 1.8中创建超级用户使用自定义用户模型

来自分类Dev

在Django中使用自定义用户模型总是在模板中返回匿名用户

来自分类Dev

Django自定义用户添加第二个用户模型

Related 相关文章

  1. 1

    Django(1.6)自定义用户模型

  2. 2

    Django自定义用户模型

  3. 3

    自定义 Django 用户模型

  4. 4

    Django自定义用户模型与配置文件模型

  5. 5

    使用Django的自定义用户模型(Django1.6)

  6. 6

    Django:使用自定义用户模型创建超级用户

  7. 7

    Django自定义Auth用户模型并重置迁移

  8. 8

    django自定义用户模型密码未哈希

  9. 9

    Django:自定义用户模型的返回字段

  10. 10

    Django Rest框架未验证自定义用户模型

  11. 11

    从自定义Django用户模型中删除密码

  12. 12

    django 1.9不为自定义用户模型创建表

  13. 13

    在Django中使用自定义用户模型时的RelatedObjectDoesNotExist

  14. 14

    无法在Django中创建自定义用户模型

  15. 15

    在Django中创建自定义用户模型的指南

  16. 16

    1.8中的Django自定义用户模型

  17. 17

    无法在Django中验证自定义用户模型

  18. 18

    Django:迁移到自定义用户模型的问题

  19. 19

    在Django中使用自定义用户模型时的RelatedObjectDoesNotExist

  20. 20

    Django rest 自定义用户模型创建失败

  21. 21

    Django Restful:如何更新我的自定义用户模型?

  22. 22

    在django 1.8中将数据从原始用户模型迁移到自定义用户模型

  23. 23

    自定义Django表单样式

  24. 24

    具有django-polymorphic的Django自定义用户模型

  25. 25

    使用自定义用户模型创建超级用户后,无法登录django admin

  26. 26

    自定义Django用户模型-用户名作为主键属性

  27. 27

    无法在Django 1.8中创建超级用户使用自定义用户模型

  28. 28

    在Django中使用自定义用户模型总是在模板中返回匿名用户

  29. 29

    Django自定义用户添加第二个用户模型

热门标签

归档