模型.py
class Tag(models.Model):
name = models.CharField(max_length=64, unique=True)
slug = models.SlugField(max_length=255, unique=True)
def save(self, *args, **kwargs):
self.slug = slugify(self.name)
super(Tag, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
urls.py
url(r'^tag/(?P<slug>[A-Za-z0-9_\-]+)/$', TagDetailView.as_view(), name='tag_detail'),
Run Code Online (Sandbox Code Playgroud)
视图.py
class TagDetailView(DetailView):
template_name = 'tag_detail_page.html'
context_object_name = 'tag'
Run Code Online (Sandbox Code Playgroud)
嗯,我认为这不会有任何问题,因为 Django 的通用 DetailView 将查找“slug”或“pk”来获取其对象。但是,导航到“localhost/tag/RandomTag”会出现错误:
错误:
ImproperlyConfigured at /tag/RandomTag/
TagDetailView is missing a queryset. Define TagDetailView.model, TagDetailView.queryset, or override TagDetailView.get_queryset().
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会发生这种情况......???
谢谢!!!
有没有办法根据产品属性创建自定义产品 URL,我有一个产品太阳镜,它有几个与之相关的属性:金属、蓝色和圆形,所以当前的 URL 是:
website.com/glasses/sunglasses/abram-widana-629/
Run Code Online (Sandbox Code Playgroud)
我想要获取的是包含以下属性的 URL:
website.com/glasses/sunglasses/abram-widana-meta-blue-round-629/
Run Code Online (Sandbox Code Playgroud)
如果有人能指出我如何解决这个问题的正确方向,我将非常感激。
当前代码仅将空格替换为破折号( - )
$url = str_replace(' ','-',$url);
Run Code Online (Sandbox Code Playgroud)
我只想在URL上允许使用字母,数字和短划线( - ).
让我知道这些技巧.
我仍然,不明白,wordpress如何理解这个网址是什么参考:www.mysite.com/about-me/
他们没有使用标识符
如果他们使用slug函数,以便他们如何保留故事信息,或者换句话说,他们如何改变被扣押的标题以从数据库中选择
我需要一个只接受的表达式:
也不允许有空格.
示例:正则表达式应匹配:
this-is-quite-alright
它应该不匹配
this -is/not,soålright
在我的urls.py中使用slugs,我遇到了一个问题(可能是由于我对这个问题缺乏了解).
Urls.py
url(r'^admin/', include(admin.site.urls)),
url(r'^search_form/$', search_form),
url(r'^search/$', search),
url(r'^search_results/$', search_results),
#url(r'^search/search_results/acetic-acid/$', item),
url(r'^(?P<slug>[-\w\d]+),(?P<id>\d+)/$', item),
Run Code Online (Sandbox Code Playgroud)
这里是html链接href ="search_results/{{chemical.S_field}} /"> {{chemical.Barcode}}其中chemical.S_field slug字段基于项目名称的细分版本.
我正在尝试创建一个页面,网址和视图,以便能够将用户带到一个模板,该模板将根据他们点击的链接进行更改.
例如,如果你有毛狗,毛猫,蓬松的鸟.如果用户点击毛茸茸的猫,那么slu will将成为毛猫,并且用户将被带到一个页面(搜索/ search_results /毛茸茸猫/将拥有将从数据库中显示的毛猫的各种信息.
我觉得这是可能的,但每次我尝试使用slug(也许我做错了)它会显示^(?P [ - \w\d] +),(?P\d +)/ $而不是存储在slug中的信息.
还有一个地方有关于django的教程或良好信息吗?我已经浏览了网站上的django教程以及Django Web开发权威指南中的django教程.
谢谢,
编辑 我可能不清楚之前应该选择一个更好的例子.我想要显示的页面将位于search/search_results/slug其中slug将是项目名称的slugified版本.这是我现在通过添加最新网址获得的内容
Using the URLconf defined in Inventory.urls, Django tried these URL patterns, in this order:
^admin/doc/
^admin/
^search_form/$
^search/$
^search_results/$
^(?P<slug>[-\w\d]+),(?P<id>\d+)/$
^(?P<slug>[-\w]+)/(?P<id>\d+)/$
The current URL, search/search_results/acetic-acid/, didn't match any of these.
Run Code Online (Sandbox Code Playgroud) 我正在建立一个网站,其中"网页"始终位于父级"类别"中.某些页面将具有相同的标题,但将驻留在不同的类别中.目前django sluggify总是在slug中添加数字,如果名称相同:
foo/help/
bar/help-1/
Run Code Online (Sandbox Code Playgroud)
有没有办法让它输出一个更智能的slug,以便slug对于该类别中的页面是唯一的.
foo/help/
bar/help/
etc/help/
etc/help-1/
Run Code Online (Sandbox Code Playgroud)
我也想以同样的方式为用户提供一些独特的页面.它们将始终作为用户的子对象进行访问,从而使它们以这种方式独特
我正在尝试使用这里找到的Laravel缓存包:https://github.com/cviebrock/eloquent-sluggable
当我保存模型(例如产品)时,可缓存的功能不会使我的模型变得迟钝.这是今天全新安装的Laravel.
我可以看到事件监听器触发(SluggableServiceProvider.php中的第43行),但似乎if($ model instanceof SluggableInterface)语句永远不会返回true并且永远不会使我的模型变得迟钝.这可能是名称间距问题吗?还有其他想法吗?
这是我的产品型号:
<?php
use Cviebrock\EloquentSluggable\SluggableInterface;
use Cviebrock\EloquentSluggable\SluggableTrait;
class Product extends Eloquent {
use SluggableTrait;
protected $sluggable = array(
'build_from' => 'title',
'save_to' => 'slug',
);
}
Run Code Online (Sandbox Code Playgroud)
当然,我可以通过执行以下操作来手动运行sluggify方法:
$product->sluggify();
Run Code Online (Sandbox Code Playgroud)
但我想坚持最佳实践,并尝试在触发模型保存事件时使缓慢的代码自动工作.
我的php脚本必须处理非slug文件名上传,例如,当用户尝试上传文件"Имянарусском.jpg"时.有些方法无法正确处理,所以我使用:
$overwrite = true;
$slug = true;
\Web::instance()->receive(NULL,$overwrite,$slug);
Run Code Online (Sandbox Code Playgroud)
所以,我在服务器上获得了"imja-na-russkom.jpg"文件.问题是我需要为DB捕获这个文件名,我试过这个:
$filename = \Web::instance()->Slug($_FILES['userfile']['name'];
Run Code Online (Sandbox Code Playgroud)
返回"imja-na-russkom-jpg" - 不是文件系统中使用的名称(不是点,而是扩展前的破折号).
所以,我的问题是:有没有办法捕获名称,在Web :: receive()中使用,或者,如果没有,是否有解决方法通过F3获取它?谢谢.
我有一个带有django-autoslug字段的模型:
class Article(models.Model):
headline = models.TextField()
content = models.TextField()
slug = AutoSlugField(populate_from='headline', max_length=128, allow_unicode=True, always_update=True)
Run Code Online (Sandbox Code Playgroud)
在开发环境中(OS X + Postgres),一切都很好用.但是,在部署的实例(Ubuntu + Postgres)上,尝试使用django admin创建对象时发生错误.它仅在标题中包含西里尔字母时才会出现:
AssertionError: slug is defined before trying to ensure uniqueness
Run Code Online (Sandbox Code Playgroud) slug ×10
django ×4
php ×4
url ×4
python ×2
regex ×2
wordpress ×2
file-upload ×1
hyperlink ×1
instanceof ×1
laravel ×1
laravel-4 ×1
seo ×1
validation ×1
woocommerce ×1