Django
1. Class View (CBV):
https://www.cnblogs.com/chichung/p/9886655.html
https://blog.csdn.net/AI_GG/article/details/103696360
https://www.cnblogs.com/knighterrant/p/10503645.html
https://blog.csdn.net/xujin0/article/details/84038778
https://blog.csdn.net/xujin0/article/details/84038778
https://www.runoob.com/django/django-form-component.html
-
O processamento da lógica de back-end não usa lógica para determinar se o método de solicitação é get ou post request. Na classe view, a definição do método get é a lógica de escrever a solicitação get e a definição da classe método post é a lógica de solicitação posterior.
-
Ver o fluxo de execução geral
self.as_view () -----> self.dispatch () ------> self.get / post
A distribuição de roteamento começa a obter o nome do aspecto da solicitação específica e reflete a função de visualização da função de solicitação específica
class View: http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace'] def as_view(cls, **initkwargs): def view(request, *args, **kwargs): return self.dispatch(request, *args, **kwargs) return view def dispatch(self, request, *args, **kwargs): if request.method.lower() in self.http_method_names: #用反射获取函数 handler = getattr(self, request.method.lower(), self.http_method_not_allowed) else: handler = self.http_method_not_allowed return handler(request, *args, **kwargs)
from django.view import View class LoginView(View): def get(self, request, *args, **kwargs): return render(request, 'login.html') def post(self, request, *args, **kwargs): return redirect('/index/')
Benefícios da visão da classe:
Boa legibilidade de código
As visualizações de classe têm maior capacidade de reutilização do que as funções. Uma visualização de classe implementa uma função. Se uma lógica específica de uma visualização de classe for necessária em outro lugar, é o suficiente para herdar diretamente esta visualização de classe.
2. Outros problemas
problema de ação: https://blog.csdn.net/qq_34045989/article/details/88977104
Carregar imagem: https://blog.csdn.net/meylovezn/article/details/47124923
MEDIA_ROOT: https://segmentfault.com/a/1190000021960355
https://www.cnblogs.com/icat-510/p/9034727.html
django-taggit: https://cloud.tencent.com/developer/article/1635695
In [4]: from articles.models import TestImage
In [5]: ti =TestImage.objects.create(name='yyt', img='img/test.png')
In [6]: ti.tags.add('new','sad','angry')
In [7]: ti.tags.all()
Out[7]: <QuerySet [<Tag: angry>, <Tag: new>, <Tag: sad>]>
In [8]: TestImage.objects.filter(tags__name__in=['new'])
Out[8]: <QuerySet [<TestImage: TestImage object (13)>]>
documentação do django-taggit: https://django-taggit.readthedocs.io/en/latest/api.html
Implementação de django-markdown: https://blog.csdn.net/Empire_03/article/details/87112250
使用 markdown: https://blog.csdn.net/qq_34405401/article/details/102528305
http://www.zhidaow.com/post/djaog-1-6-markdown
pip install markdown
A ideia básica de embutir markdown no django é: basta definir uma caixa em uma página para escrever a gramática markdown e, depois de escrever, a gramática markdown pode ser processada em instruções html e executada na página. De um modo geral, é um template. Adicionar suporte markdwon para renderização
django-markdown-deux: https://github.com/trentm/django-markdown-deux
ERRORS:?: (Staticfiles.E002) A configuração STATICFILES_DIRS não deve conter a configuração STATIC_ROOT
https://blog.csdn.net/Sun_White_Boy/article/details/80684620
Escreva o formato de roteamento em urls.py
Como escrever a URL da ação de envio do formulário django?
Como definir dados de tipo de campo de texto em formulários, escritos comoforms.CharField(widget=forms.Textarea)
class BlogForm(forms.Form):
title = forms.CharField(required = True)
content = forms.CharField(widget=forms.Textarea)