我创建了一个Django应用程序,可以根据帖子标题为博客帖子生成网址。
在开发环境中,网址很好,是从整个标题创建的,但在制作中,网址被剪切,仅限于几个字符。
由于Django文件在两种环境中完全相同,我怀疑它可能与服务器或数据库(生产中使用的MySQL和开发中的SQLite)有关。
示例:
文章标题: “在创办公司之前,你希望你知道的一件事是什么?”
开发中的网址 mydomain.com/what-was-the-one-thing-you-wish-you-knew-before-starting-a-company
生产中的网址 mydomain.com/what-was-the-one-thing-you-wis
这是与创建和保存博客帖子对象相关的代码:
模型:
class Post(models.Model):
title = models.CharField(max_length=300, verbose_name='Title')
slug = models.SlugField(unique=True, max_length=250)
视图:
if request.method == 'POST':
form = PostForm(request.POST)
if form.is_valid():
form_data = form.save(commit=False)
form_data.slug = slugify(form_data.title)
slug = form_data.slug
# If slug is already taken, add a random number at the end of it
try:
Pergunta.objects.get(slug=slug)
form_data.slug = slug + str(randint(0,100))
except:
pass
form_data.save()
form.save_m2m()
URLS:
url(r'^blogpost/(?P<slug>.*)$', views.blogpost, name='blogpost'),
MYSQL表格列:
| id | int(11) | NULL | NO | PRI | NULL | auto_increment | select,insert,update,references | |
| autor_id | int(11) | NULL | NO | | NULL | | select,insert,update,references | |
| title | varchar(300) | utf8_general_ci | NO | | NULL | | select,insert,update,references | |
| slug | varchar(50) | utf8_general_ci | NO | UNI | NULL | | select,insert,update,references | |