为什么我的 URL 没有在 django 中激活视图?



下面是我要做的事情:

  1. 很少有电视频道作为图像链接,它们会在频道内有一些信息
  2. 我设法把电视频道创建成一个列表,它们看起来像一个链接,但工作起来不像链接

我为每个通道创建了段塞区域,该区域取自其自己的名称并自动生成段塞。使用get_absolute_url,我在下面的代码中获取它的url;

这是我的型号:

class Channels(models.Model):
name = models.CharField(max_length=50, null=False, blank=False, verbose_name="Tv Kanalı")
logo = models.ImageField(upload_to="channels/images/", verbose_name="Tv Logosu", blank=False)
slug = models.SlugField(null=True, unique=True, editable=True)
def save(self, *args, **kwargs):
self.slug = slugify(self.name)
super(Channels, self).save(*args, **kwargs)
def get_absolute_url(self):
return reverse('channel-list:campaigns', kwargs={'page_slug': self.slug})

这是我的主要网址:

urlpatterns = [
path('admin/', admin.site.urls),
url(r'', include(('tvekstra.apps.core.urls', 'home'), namespace='home')),
url(r'^user/', include(('tvekstra.apps.user.urls', 'login'), namespace='user')),
url(r'^channels/', include(('tvekstra.apps.tvchannels.urls', 'main'), namespace="channel-list")),

这是通道urls:

urlpatterns = [
url(r'', views.channel_list, name='channels'),
url(r'^(?P<page_slug>[-w]+)/$', views.campaign_list, name='campaigns'),

]

这是我的观点:

def channel_list(request):
channels = Channels.objects.all()
return render(request, 'channel.list.html', {'channels': channels})
def campaign_list(request, page_slug):
channel = get_object_or_404(Channels, slug=page_slug)
return render(request, 'campaign.list.html', {'channel': channel})

这是我的模板:

{% for channel in channels %}
<div class="col-3 text-center channels">
<a href="{{ channel.get_absolute_url }}">
<img src="{{ channel.get_image }}" alt="Channel Image" class="ch-img">
{{ channel.name }}
</a>
</div>
{% endfor %}

正如您所看到的,a href是channel的getabsoluteur方法。它创建了html,但没有前进页面。我认为由于某种原因,请求援助的观点不起作用。。。

url(r'',''匹配,但也与/channels/fox//something-else/匹配。

您可以通过在正则表达式中添加^$来修复它。

url(r'^$', views.channel_list, name='channels'),

在Django 2.0+中,最好使用re_path,因为url在Django3.1:中已被弃用

re_path(r'^$', views.channel_list, name='channels'),

使用path:会更简单

path('', views.channel_list, name='channels'),

最新更新