Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
boa tarde....sou iniciante em django e estou com uma dúvida...espero que VCs possam me ajudar....desde já agradeço!!!
estou desenvolvendo um blog pessoal e criei um menu com 4 itens de postagem...INDEX...SOBRE...ARTIGOS...PROJETOS...(a postagem esta funcionando)
no item sobre...é uma postagem que vou falar sobre mim...
no artigo são postagens sobre determinados assuntos....
em projetos sao postagens sobre alguns trabalho com desenvolvimentos meu...
e meu problema é no index...eu gostaria que no index chamassem as postagens do menu ARTIGOS e PROJETOS....só que eu naum queria que fosse mostrado separadamente....eu gostaria que fosse mostrado em ordem do mais recente entre os dois juntos....
meu models ta assim:
from django.db import models
class Sobre(models.Model):
titulo = models.CharField(max_length=100)
imagem = models.ImageField(upload_to = "blog/uploads/sobre")
conteudo = models.TextField()
def __unicode__(self):
return "%s" % (self.titulo)
class Artigo(models.Model):
titulo = models.CharField(max_length=100)
imagem = models.ImageField(upload_to = "blog/uploads/artigos")
conteudo = models.TextField()
data = models.DateField()
def __unicode__(self):
return "%s - %s - %s" % (self.titulo,self.conteudo,self.data)
class Projeto(models.Model):
titulo = models.CharField(max_length=100)
imagem = models.ImageField(upload_to = "blog/uploads/projetos")
conteudo = models.TextField()
data = models.DateField()
def __unicode__(self):
return "%s" % (self.titulo)
minhas urls ta assim:
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'marciotognere.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^$','blog.views.index'), #index
url(r'^sobre/$','blog.views.sobre'), #chama sobre
url(r'^artigos/$','blog.views.artigos'), #chama artigos
url(r'^projetos/$','blog.views.projetos'), #chama projetos
url(r'^admin/', include(admin.site.urls)), #chama painel de controle
)
minha views ta assim:
from django.shortcuts import render
from django.http import HttpResponse
from blog.models import Sobre, Artigo, Projeto
from django.template import Context, loader
#TA DANDO ERROOOO
def index(request):
blog_list = (Artigo,Projeto).objects.all().order_by('-id')
t = loader.get_template('index.html')
c = Context({'blog_list':blog_list,})
return HttpResponse(t.render(c))
def sobre(request):
blog_list = Sobre.objects.all().order_by('-id')
t = loader.get_template('sobre.html')
c = Context({'blog_list':blog_list,})
return HttpResponse(t.render(c))
def artigos(request):
blog_list = Artigo.objects.all().order_by('-id')
t = loader.get_template('artigos.html')
c = Context({'blog_list':blog_list,})
return HttpResponse(t.render(c))
def projetos(request):
blog_list = Projeto.objects.all().order_by('-id')
t = loader.get_template('projetos.html')
c = Context({'blog_list':blog_list,})
return HttpResponse(t.render(c))
muito obrigado isis....desculpa minha ignorancia ainda...é q sou iniciante em django...consegui fazer...fiz de um jeito parecido do seu... fiz um unico model chamado postagem...e nele coloquei um choices (um listbox) com os valores artigos e projetos...e no views eu programei para que no index aparece todas as postagem e no item do menu artigos aparecesse apenas as opções onde na coluna opcao do choices tivesse o nome artigos e assim consequentemente no item projetos e deu certo....muito obrigado vc me ajudou muito ...
Vamos por partes... Primeiro os modelos...
from blog.models import Sobre, Artigo, Projeto
def index(request):
def order_by_date(obj):
# Implemente a ordenação por data aqui utilizando o sorted:
# https://wiki.python.org/moin/HowTo/Sorting
from operator import attrgetter
Ou, se você realmente quiser usar SQL: https://docs.djangoproject.com/en/dev/topics/db/sql/#executing-custom-sql-directly
Eu realmente me concentraria em refinar o modelo (veja que os campos são iguais nos dois modelos):
from django.db import models
class Artigo(models.Model):
titulo = models.CharField(max_length=100)
imagem = models.ImageField(upload_to = "blog/uploads/artigos")
conteudo = models.TextField()
data = models.DateField()
class Projeto(models.Model):
titulo = models.CharField(max_length=100)
imagem = models.ImageField(upload_to = "blog/uploads/projetos")
conteudo = models.TextField()
data = models.DateField()
Como tudo será tratado como um post, eu criaria o seguinte modelo:
from django.db import models
class CategoriasPost(models.Model):
categoria = models.CharField(max_length=40, blank=False, null=False)
def __unicode__(self):
return self.categoria
class Post(models.Model):
titulo = models.CharField(max_length=100, blank=False, null=False)
conteudo = models.TextField(blank=False, null=False) # Limite depende do banco.
data = models.DateField(blank=False, null=False, auto_now=True)
categorias = models.ManyToManyField(TiposPost)
class Meta:
ordering = ('-data',)
verbose_name = 'post'
verbose_name_plural = 'posts'
E dado que blog é algo comum de ser feito em Django, existem vários pacotes que implementam essa ideia de categorização de posts. Basta instalar e usar.
*
Quanto à página "Sobre", é uma página estática, podendo ser criada com um class-based view (https://docs.djangoproject.com/en/dev/topics/class-based-views/):
Assim, as imagens ficariam num diretório static (especificado no settings.py por STATIC_ROOT) depois de você executar o comando collectstatic e poderiam ser referenciadas normalmente dentro uma página HTML simples, que não passa pelo banco de dados. (https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/))