Смайлики / смайлики и иностранные языки в URL-слаге, приводящие к ошибке сервера - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь автоматически создавать слагов, извлеченных из названий, введенных пользователями, но я понял, что если в качестве заголовка добавляется просто смайлик / эмодзи или иностранный язык, я получаю это сообщение об ошибке

NoReverseMatch at / images/ create /

Реверс для 'detail' с аргументами '(277,' ')' и ключевыми словами аргументов '{}' не найден.Попробован 1 шаблон (ов): ['images / detail / (? P \ d +) / (? P [- \ w] +) / $']

Вот моя модель

class Image(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                             related_name='images_created')
    title = models.TextField(max_length=911, blank=False)
    slug = models.SlugField(max_length=200,
                            blank=True)
    url = models.URLField()
    tags = TaggableManager(blank=True)
    image = models.ImageField(upload_to='')
    description = models.TextField(blank=True, null=True)
    created = models.DateField(auto_now_add=True,
                                                db_index=True)
    users_like = models.ManyToManyField(settings.AUTH_USER_MODEL,





    class Meta:
        ordering = ('-created',)




    def __str__(self):
        return self.title


    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.title)
            super(Image, self).save(*args, **kwargs)

    def get_absolute_url(self):
        return reverse('images:detail', args=[self.id, self.slug])

Вот моя функция просмотра

@login_required
def image_create(request):
    if request.method == 'POST':
        form = ImageCreateForm(request.POST, request.FILES)
        if form.is_valid():
            cd = form.cleaned_data
            new_item = form.save(commit=False)
            new_item.user = request.user

            new_item.save()
            form.save_m2m()
            create_action(request.user, '|', new_item)
            messages.success(request, 'Photo added successfully')
            return redirect(new_item.get_absolute_url())

    else:
        form = ImageCreateForm(data=request.GET)

    return render(request, 'images/image/create.html', {'section':     
    'images', 'form': form})

Мои urls.py

urlpatterns = [url(r'^create/$', views.image_create, name='create'),

Я получаю

NoReverseMatch в / images / create / Reverse для 'detail'с аргументами '(277,' ')' и ключевыми словами '{}' не найдено.Попробован 1 шаблон (ов): ['images / detail / (? P \ d +) / (? P [- \ w] +) / $']

вместо сообщения об успехе.

...