簡體   English   中英

Django-Tango與Django上傳圖片

[英]Django - Tango With Django upload picture

我正在使用Django探戈中的第9章-創建用戶身份驗證。 在注冊頁面中,我可以選擇上傳圖片。 在我自己注冊后,管理文件中的所有內容看起來都很不錯。 我出現在用戶個人資料中,甚至顯示了我上傳的圖像: Picture: Currently: profile_images/earth.jpeg Clear 但是,當我單擊該圖片時,這是我收到的錯誤消息:

Page not found (404)
Request Method: GET
Request URL:    http://localhost:8000/admin/rango/userprofile/1/change/profile_images/earth.jpeg/change/
Raised by:  django.contrib.admin.options.change_view
user profile object with primary key u'1/change/profile_images/earth.jpeg' does not exist.
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.

models.py:

from __future__ import unicode_literals

from django.db import models
from django.template.defaultfilters import slugify
from django.contrib.auth.models import User


class Category(models.Model):
    name = models.CharField(max_length=128, unique=True)
    views = models.IntegerField(default=0)
    likes = models.IntegerField(default=0)
    slug = models.SlugField(unique=True)

    def save(self, *args, **kwargs):
        self.slug = slugify(self.name)
        super(Category, self).save(*args, **kwargs)

    class Meta:
        verbose_name_plural = 'categories'

    def __str__(self):
        return self.name


class Page(models.Model):
    category = models.ForeignKey(Category)
    title = models.CharField(max_length=128)
    url = models.URLField()
    views = models.IntegerField(default=0)

    def __str__(self):
        return self.title


class UserProfile(models.Model):
    user = models.OneToOneField(User)
    website = models.URLField(blank=True)
    picture = models.ImageField(upload_to='profile_images', blank=True)

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

views.py-僅register():

def register(request):
    registered = False

    if request.method == 'POST':
        user_form = UserForm(data=request.POST)
        profile_form = UserProfileForm(data=request.POST)

        if user_form.is_valid() and profile_form.is_valid():
            user = user_form.save()
            user.set_password(user.password)
            user.save()

            profile = profile_form.save(commit=False)
            profile.user = user

            if 'picture' in request.FILES:
                profile.picture = request.FILES['picture']
            profile.save()
            registered = True
        else:
            print user_form.errors, profile_form.errors
    else:
        user_form = UserForm()
        profile_form = UserProfileForm()

    return render(request, 'rango/register.html',
                  {'user_form': user_form,
                   'profile_form': profile_form,
                   'registered': registered}
                  )

最后,我的register.html文件:

{% extends 'rango/base.html' %}
{% load staticfiles %}

{% block title_block %}
    Register
{% endblock %}

{% block body_block %}
    <h1>Register with Rango</h1>
    {% if registered %}
        Rango says: <strong>thank you for registering!</strong>
        <a href="/rango/">Return to the homepage</a><br/>
    {% else %}
        Rango says: <strong>register here!</strong>
        Click <a href="/rango/">here</a> to go to the homepage<br/>
        <form id="user_form" method="post" action="/rango/register/" enctype="multipart/form-data">
            {% csrf_token %}
            {{ user_form.as_p }}
            {{ profile_form.as_p }}

            <input type="submit" name="submit" value="Register" />
        </form>
    {% endif %}
{% endblock %}

主鍵為u'1 / change / profile_images / earth.jpeg'的用戶配置文件對象不存在。

您的網址格式之一似乎已關閉; 它可能只想捕獲1用作查找的PK,而是捕獲1/change/profile_images/earth.jpeg

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM