URL与django混淆

时间:2014-10-30 03:25:19

标签: django url django-models django-views

似乎Django并没有很好地区分我的网址。如果我想显示我的照片/添加页面,那么我必须删除照片/网址,否则Django将始终返回相同的“照片列表”网​​址。

urls.py

from django.conf.urls import patterns, url
from django.conf import settings
from django.conf.urls.static import static

from photo import views


urlpatterns = patterns('',
    url(r'$', views.ListImage.as_view(),name ='Photo-List',),
    url(r'add$', views.ImageCreate.as_view(), name = 'create-image',),
    url(r'display/(?P<pk>\d+)/$', views.ImageView.as_view(),name='image-view',),
    url(r'update/(?P<pk>\d+)/$', views.ImageUpdate.as_view(),name='image-update',),

) 

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL,
                          document_root = settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL,
                          document_root = settings.MEDIA_ROOT)

views.py

from django.views.generic import ListView, DetailView, UpdateView, CreateView, UpdateView, DeleteView
from django.core.urlresolvers import reverse_lazy, reverse
from photo.models import Tag, Image, Album
from django.conf import settings

class ListImage(ListView):
    #context_object_name = 'object_list'
    template_name = 'image_list.html'
    model = Image

class ImageView(DetailView):
    model = Image
    template_name = 'image.html'

class ImageCreate(CreateView):
    model = Image
    template_name='image_create.html'
    fields = ['title','image']
    success_url=reverse_lazy('create-image')

另外,其他主要问题,我无法使我的Detail视图工作。如果我尝试访问photo / display / 2,我会得到一条404,说没有图像与查询匹配。这对我来说是一个非常重要的项目,我真的希望有人可以帮助我。在那里添加我的models.py以防万一

from django.db import models
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse_lazy, reverse
from django.contrib import admin
from django.conf import settings
from string import join
import os


class Album(models.Model):
    title = models.CharField(max_length=60)
    public = models.BooleanField(default=False)
    def __unicode__(self):
        return self.title
    def images(self):
        lst = [x.image.name for x in self.image_set.all()]
        lst = ["<a href='/media/%s'>%s</a>" % (x, x.split('/')[-1]) for x in lst]
        return join(lst, ', ')
    images.allow_tags = True

class Tag(models.Model):
    tag = models.CharField(max_length=50)
    def __unicode__(self):
        return self.tag

class Image(models.Model):
    title = models.CharField(max_length=60, blank=True, null=True)
    image = models.FileField(upload_to="images/")
    tags = models.ManyToManyField(Tag, blank=True)
    albums = models.ManyToManyField(Album, blank=True)
    created = models.DateTimeField(auto_now_add=True)
    rating = models.IntegerField(default=50)
    width = models.IntegerField(blank=True, null=True)
    height = models.IntegerField(blank=True, null=True)
    user = models.ForeignKey(User, null=True, blank=True)

1 个答案:

答案 0 :(得分:1)

我认为this answer可能有所帮助。尝试将初始插入符号('^')添加到您的网址正则表达式