diff --git a/.gitignore b/.gitignore index 8691934..c37e91a 100644 --- a/.gitignore +++ b/.gitignore @@ -63,6 +63,7 @@ coverage.xml .python-version 3.12/lib/python3.12/site-packages/ +3.12/include # Tailwind CSS /static/css/dist/ diff --git a/data/db.sqlite3 b/data/db.sqlite3 index cb3d1b8..1d31f3d 100644 Binary files a/data/db.sqlite3 and b/data/db.sqlite3 differ diff --git a/links/__pycache__/views.cpython-312.pyc b/links/__pycache__/views.cpython-312.pyc index ad960e7..8fe5b6d 100644 Binary files a/links/__pycache__/views.cpython-312.pyc and b/links/__pycache__/views.cpython-312.pyc differ diff --git a/links/views.py b/links/views.py index 137b2f1..08d70ad 100644 --- a/links/views.py +++ b/links/views.py @@ -72,6 +72,17 @@ class LinkCreateView(CreateView): initial['alias'] = alias return initial + def form_valid(self, form): + alias = form.cleaned_data.get('alias') + if not self.is_valid_alias(alias): + form.add_error('alias', _("Alias cannot contain special characters.")) + return self.form_invalid(form) + return super().form_valid(form) + + def is_valid_alias(self, alias): + # 检查别名是否包含特殊字符 + return alias.isalnum() # 只允许字母和数字 + class LinkUpdateView(UpdateView): model = Link form_class = LinkForm @@ -79,13 +90,15 @@ class LinkUpdateView(UpdateView): success_url = reverse_lazy('link_list') def form_valid(self, form): - try: - return super().form_valid(form) - except ValidationError as e: - for field, errors in e.message_dict.items(): - for error in errors: - messages.error(self.request, f"{error}") + alias = form.cleaned_data.get('alias') + if not self.is_valid_alias(alias): + form.add_error('alias', _("Alias cannot contain special characters.")) return self.form_invalid(form) + return super().form_valid(form) + + def is_valid_alias(self, alias): + # 检查别名是否包含特殊字符 + return alias.isalnum() # 只允许字母和数字 def form_invalid(self, form): for field, errors in form.errors.items():