Ayuda Django crear pagina de inicio

django
python

#1

Hola soy nuevo en django y python yo cree una app que hace crud (con ayuda de varios tutoriales) y me sirve bien pero luego quiero crear una pagina de inicio, mi app (crud, asi se llama) esta bloqueada por embellecedores de django algo asi use jeje solo digo esto para que sepan un poco mas lo que hice asi que para ingresar a esta se debe estar logueado necesariamente pero mi problema es que no se como crear una pagina de inicio ya que al colocar localhost:8000 me lleva directamente a mi app, quisiera que llevara a una pagina de inicio y que esta pagina de inicio tenga un link para abrir el admin de django y desde ahi si abra mi app, algo asi egun este esquema:

Dejare mi codigo ,base de datos y conector por si quieren recrear el escenario y me orienten mas o menos como hacer, supongo que tendria que hacer una app llamada homepage o algo asi
https://www.dropbox.com/s/cayf5gigxbbowv8/web.rar?dl=0


#2

Buenas @naotosx,

no consigo ver tu código, tengo problemas para descomprimir el rar… pero básicamente, lo que tienes que hacer es modificar el archivo urls.py de tu aplicación principal (que parece que es web) y crear/modificar las urls correspondientes para dejarlas a algo parecido a esto:


url(r’^$’, InicioView.as_view(), name=‘InicioView’),
url(r’^login$’, LoginView.as_view(), name=‘LoginView’),
url(r’^menu$’, MenuView.as_view(), name=‘MenuView’),

Después creas las vistas InicioView, LoginView y MenuView con la información que quieras mostrar en cada una.


#3

hola gracias por responder , yo ya cree e hice mi url y mi vista y el html pero me dice que no lo encuentra (TemplateDoesNotExist) y no se que tengo malo , te adjuntare de nuevo el proyecto a ver si le echas una ojeada , si puedes claro jeje pero en resumen mi proyecto es web y con dos aplicaciones crud (la que se ve necesariamente cuando estas logueado) y homepage (que se supone que deberia ser la pagina de inicio)

https://drive.google.com/open?id=1c4ehLXaLK11V_HmBr1ET8NL7Mqaujrdi


#4

Buenas,

el problema es de las rutas a los templates. En crud los templates están en crud/templates/crud/ y en las vistas los llamas con ‘crud/loquesea’, que es correcto, pero en homepage los templates están en homepage/templates y en las vistas las llamas con ‘templates/loquesea’, por tanto django no las encuentra porque no existe ningún directorio templates dentro de templates. Modifica la vista index de esta manera:

> def index(request):
>     return render(request, 'homepage.html')  # he quitado templates de la ruta

#5

cierto tienes razon amigo gracias :smiley: y lo del index lo que hice fue es en views.py estaba asi

 def index_redirect(request):
     return  redirect('/crud/')

y lo puse asi

def index_redirect(request):
    return  redirect('/homepage/')
def crud(request):
        return  redirect('/crud/')

supongo que esa vista index_redirect era el inicio y ya al poner localhost:8000 carga mi pagina de inicio en vez de la aplicacion crud y como ya esta bloqueado no hay problema, por cierto alguna forma rapida de indicar cuando no encuentre x pagina me devuelva a otra en especifico?

Aunque no se por que pero ahora cuando me logueo y le doy view site no e aparece crud sino mi pagina de inicio mmmmmmmmm


#6

Un aclaración, el emparejamiento entre urls y vistas se hace en los archivos urls.py, no en las vistas, es decir, si quieres que una vista sea la “inicial” tienes que especificarlo en el archivo urls.py. Siguiendo el ejemplo anterior, si tienes un archivo urls.py como este:

url(r’^$’, InicioView.as_view(), name=‘InicioView’),
url(r’^login$’, LoginView.as_view(), name=‘LoginView’),
url(r’^menu$’, MenuView.as_view(), name=‘MenuView’),

la vista InicioView se ejecutará al entrar en localhost:8000
la vista LoginView se ejecutará al entrar en localhost:8000/login
la vista MenuView se ejecutará al entrar en localhost:8000/menu

¿entiendes?

En cuanto a tu otra pregunta, si lo que quieres es tratar los errores 404 (page not found) de forma personalizada puedes hacerlo sin problemas. Échale un vistazo a:

https://docs.djangoproject.com/en/1.11/ref/urls/#handler404

Y para terminar :slight_smile: , puedes decirle a Django a qué url quieres que te redirija después de hacer login con el parámetro LOGIN_REDIRECT_URL del settings.py. Mira esto:

https://docs.djangoproject.com/en/1.11/ref/settings/#login-redirect-url


#7

jejejejjeje gracias de nuevo me sirvio @login_required(login_url=’/admin’) para redireccionar si no esta logueado , aunque no entendi mucho lo primero, eso me servira para que cuando le de aqui en View Site abra mi aplicacion crud? eso es lo unico que me falta hasta ahora jejejej y bueno luego subir a algun servidor que me gustaria que me recomiendes uno :smiley:


#8

Pues de servidores no te puedo aconsejar mucho… sé que digital ocean o heroku dan buen soporte para aplicaciones Django y tienes tutoriales online que te explican como configurar tu servidor paso a paso, pero personalmente uso Hetzner porque en su día alguien que sabe de estas cosas me lo recomendó.