簡體   English   中英

即使使用“allow_unicode=True”,韓語中的 Slug 也無法在 Django 中工作

[英]Slug in Korean not working in Django even with 'allow_unicode=True'

我正在嘗試使用 django.utils.text 中的django.utils.text制作一個自動彈頭。 以下是我的代碼:

# models.py

from django.db import models
from django.contrib.auth.models import User
from django.utils.text import slugify

class Article(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField(allow_unicode=True)
    body = models.TextField()
    date = models.DateTimeField(auto_now_add=True)
    thumb = models.ImageField(default='default.png', blank=True)
    author = models.ForeignKey(User, default=None, on_delete=models.CASCADE)

    def save(self, *args, **kwargs):
        self.slug = slugify(self.title, allow_unicode=True)
        super().save(*args, **kwargs)

    def __str__(self):
        return self.title
# article_create.html

{% extends 'base.html' %}

{% block content %}
    <div class="create-article">
        <h2>Awesome New Article </h2>
        <form class='site-form' action="{% url 'articles:article_create' %}" method="POST" enctype="multipart/form-data">
            {% csrf_token %}
            {{ form.as_p }}
            <input type="submit" value="create">
        </form>
    </div>
{% endblock %}
# html template - article_lists.html

...
<a href="{% url 'articles:article_details' article.slug %}"></a>
...

我使用 allowed_unicode=True 以允許使用不同的語言,但是當我在表單的標題中輸入韓語時出現以下錯誤:

在此處輸入圖像描述

第一個下划線是我要發布的文章的標題,第二個下划線是 Django 后端檢查 slug,但我看到它不識別韓文字母......我做了所有其他類似的 StackOverflow,包括放置allow_unicode=True ,但它不起作用。 這里一定有什么問題???

*編輯:這是urls.py代碼:

from django.urls import path
from . import views

app_name = 'articles'

urlpatterns = [
    path('', views.article_list, name="article_list"),
    path('create/', views.article_create, name="article_create"),
    path('<slug:slug>/', views.article_details, name='article_details'),
]

該錯誤顯示您在urls.py文件中為給定路由定義的內容。 您可以更改路線articles/?P<slug>...以不僅僅包含[-a-zA-Z0-9_] 然后反向查找應該能夠匹配 slug。

找出原因! 它不起作用是因為urls.py

前:

from django.urls import path
from . import views

app_name = 'articles'

urlpatterns = [
    ...
    path('<slug:slug>/', views.article_details, name='article_details'),
]

后:

from django.urls import path
from . import views

app_name = 'articles'

urlpatterns = [
    ...
    path('<slug>/', views.article_details, name='article_details'),
]

我不得不將<slug:slug>更改為<slug> ...我真的不知道原因,也許它只是用於韓語,但這對我來說是正確的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM