3

I have a really basic question. I'm trying to build some AJAX functionality into a Django project. I plan to use jQuery. Right now, I'm just running the code locally through Linux. I've been testing some code here so I'm reasonably certain that it works. But I'm having trouble figuring where to put the jQuery source code in combination with my settings.

I downloaded jQuery and put it in what I think is my Media folder. My settings.py file reads as follows:

MEDIA_ROOT = os.path.join(PROJECT_DIR, 'books/media/')<br>
MEDIA_URL = 'http://localhost:8000/books/media/'

In my html template, I'm referencing:

<script type="text/javascript" src="/media/js/jquery-1.4.2.min.js">

But none of my functions are working. I'm sure it's something stupid and obvious (though clearly not obvious to me). How do I correctly source jQuery?

5 Answers 5

7

You can hardcode the link as

<script type="text/javascript" src="/books/media/js/jquery-1.4.2.min.js">

or if you render your template with a RequestContext and use the django.core.context_processors.media context processor, then you can access MEDIA_URL in your template.

<script type="text/javascript" src="{{ MEDIA_URL }}}js/jquery-1.4.2.min.js">
Sign up to request clarification or add additional context in comments.

2 Comments

awesome! Any idea why this works: <script type="text/javascript" src="/books/media/js/jquery-1.4.2.min.js"></script> <script type="text/javascript"> . . .code. . .</script> but this doesn't: <script type="text/javascript" src="/books/media/js/jquery-1.4.2.min.js"> . . .code. . .</script>
You can't have src and code in the script tag at the same time. It's just the way html is specified. See this stackoverflow question: stackoverflow.com/questions/1056325/…
3

I believe you'll need src="/books/media/js/jquery-1.4.2.min.js"

Also, though, I do it thusly.

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
  google.load("jquery", "1.4");
</script>

3 Comments

Is it preferable to load it like this or to download it to my own directory?
I prefer doing it this way because there's 1 less Javascript file to worry about and I use google.load for a few other things as well such as their maps API. Really though, there's nothing wrong with downloading it into your own directory if you prefer.
In theory it can make your website faster. If a user goes to website A that uses Google to host jQuery, then visits your website, then jQuery is already in the browser cache, so doesn't need to be downloaded again.
2

You need to setup Django to serve your media files (otherwise, serve them from a proper HTTP server). Add the following line to your url.py:

(r'^mymedia/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),

Make sure you change the mymedia part to align with your media directory.

1 Comment

what does it mean: to serve static media? And is this only necessary from a local project?
1

Can you try the following:

  1. Access the URL http://localhost:8000/books/media/js/jquery-1.4.2.min.js using your browser or curl and see what turns up.

  2. Check your URL configuration to see that you have an URL defined for serving media using static serve.

Comments

0

Step1: put your jquery-2.0.3.js in the APP's "static" subfolder,like "books/static/jquery-2.0.3.js";

Step2: config your urls.py, add the following line:

r('^static/(?P<path>.*)$','django.views.static.serve'),

Step3: in your template file, use the js file as follows:

<script type="text/javascript" src="/static/jquery-2.0.3.js"></script>

That is all.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.