首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django项目管理

Django项目管理
EN

Stack Overflow用户
提问于 2018-08-06 02:20:43
回答 1查看 21关注 0票数 0

我目前面临的问题是,我想从我的主应用程序(博客应用程序)中的另一个应用程序(帐户应用程序,包含用户模型)调用视图。

这是我得到的错误:

代码语言:javascript
复制
django.core.exceptions.FieldError: Unknown field(s) (username) specified for User

urls.py

代码语言:javascript
复制
...
from quickblog import views as core_views
from accounts import views as views_accounts

...
url(r'^myaccount/$', views_accounts.view_profile, name='myaccount'),

views.py (accounts应用程序):

代码语言:javascript
复制
from django.shortcuts import render, redirect
from django.urls import reverse

from accounts.forms import (
    RegistrationForm,
    EditProfileForm
)

from django.contrib.auth.models import User
from django.contrib.auth.forms import PasswordChangeForm
from django.contrib.auth import update_session_auth_hash


def register(request):
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect(reverse('accounts:home'))
    else:
        form = RegistrationForm()

        args = {'form': form}
        return render(request, 'reg_form.html', args)


def view_profile(request, pk=None):
    if pk:
        user = User.objects.get(pk=pk)
    else:
        user = request.user
    args = {'user': user}
    return render(request, 'profile.html', args)


def edit_profile(request):
    if request.method == 'POST':
        form = EditProfileForm(request.POST, instance=request.user)

        if form.is_valid():
            form.save()
            return redirect(reverse('accounts:view_profile'))
    else:
        form = EditProfileForm(instance=request.user)
        args = {'form': form}
        return render(request, 'edit_profile.html', args)


def change_password(request):
    if request.method == 'POST':
        form = PasswordChangeForm(data=request.POST, user=request.user)

        if form.is_valid():
            form.save()
            update_session_auth_hash(request, form.user)
            return redirect(reverse('accounts:view_profile'))
        else:
            return redirect(reverse('accounts:change_password'))
    else:
        form = PasswordChangeForm(user=request.user)

        args = {'form': form}
        return render(request, 'change_password.html', args)

profile.html:

代码语言:javascript
复制
{% extends 'quickblog/base.html' %}


{% block head %}
<title>Profile</title>
{% endblock %}

{% block body %}
<div class="container">
    <h1>Profile</h1>
    <p>Username: {{ user }}</p>
    <p>Bio: {{ user.bio }}</p>
    <p>Avatar: {{ user.avatar }}</p>
    {% if user.avatar.image %}
    <img src="{{ user.avatar.image.url }}" width="250">
    {% endif %}
</div>

{% endblock %}

这是我的第一个django应用程序,关于在一个项目中链接两个应用程序,有什么我需要知道的吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-07 03:16:49

在forms.py找到错误

代码语言:javascript
复制
class RegistrationForm(UserCreationForm):
    user = forms.CharField(required=True)
class Meta:
    model = User
    fields = (
        'username', < has to be user
        'password1',
        'password2',
    )

无论如何,谢谢大家:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51697099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档