On 19/07/2011 1:49pm, Alex Hall wrote:
Hello all,
I was on this list a few months ago, but was unable to get a
django-friendly web host. I am now helping with a site on Bluehost,
which does support django, and I am hoping to be given permission by
the guy in charge to use django instead of php for our project.

I have been going through the tutorial, adapting it to my project as
necessary, and have a couple questions.

1. This must be glaringly obvious, but how do I use django to load my
homepage (index.html in the public_html root)? I understand about
views and url matching, but there is no views.py in the main directory
and I am not sure if I am supposed to create one or not. In other
words, how does django know where to find the page to load when a
visitor simply goes to mysite.com, instead of
mysite.com/something_to_match?

Normally you would build a dynamic home page but here is a simple sequence ...

1. Write a hello world index.html which will be your "home" page

2. Put it in <project>/templates where <project> is the directory containing settings.py

3. In urls.py where your other patterns exist scroll to the end and add this ...

    # note the += which appends this pattern to the others.
    urlpatterns += patterns('',
        # empty string r'' matches any URL so put it last
        (r'', 'flatviews.flatpage'),
        )

4. Create a new file flatviews.py in the <project> directory like this ...

from django.shortcuts import render_to_response

def flatpage(request, pagename='index.html'):
    return render_to_response(pagename)

Should do the trick. Your mission is now to build your home page from inherited templates and database content via the django template language.



2. The project I am working on has a few tables: media, articles, and
authors. An article can have one author and one or more rows in the
media table associated with it. I currently have an app called
"tables", in which I plan to define the three tables in models.py (I
am only working with authors as a test). All my views, urls, and so
forth will be inside this tables app. Is this generally recommended,
or should I have an app for each table?

The layout principle as set down by James Bennet in Practical Django Projects is to keep it simple. In other words you would begin by keeping it all in a single app directory.

If it starts to get complex you can refactor into separate directories eg all views in a views directory etc. In there you can have different files for different groups of views which might have some similarity such as all needing to import the same particular model or models. Models too can be split into different files in a separate models directory. Keep stuff together which belongs together.

Finally, he says to try and segregate your own project into separate apps in their own directories with their own urls, models, views etc on the basis of some sort of standalone functionality.

My own take on this is to not worry when you are a beginner because it will become obvious when things are getting messy and you suddenly realise all you have to do is unclutter directories into a nice and comfortable hierarchy.

One example above is flatviews.py which I said to put in the <project> directory. If you decided that was getting too cluttered you could make a views directory and move it into <project>/views/flatviews.py and refactor urls.py so it called 'views.flatviews.flatpage'

Good luck

Mike

The tutorial has two tables
defined, but the urls are all /polls/[something], whereas my urls
might be /authors/, /author/[id], /article/[id], and so on (not
sharing /[app_name]/... like the tutorial does). I hope that made
sense!


--
You received this message because you are subscribed to the Google Groups "Django 
users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to