首页 > 解决方案 > Django链接两个应用程序

问题描述

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

这是我得到的错误:

django.core.exceptions.FieldError: Unknown field(s) (username) specified for User

网址.py

...
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(帐户应用程序):

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)

这是我的第一个 django 应用程序,关于在一个项目中链接两个应用程序,我可能需要了解什么?

谢谢

标签: djangoroutesproject

解决方案


推荐阅读