Python - Developing Web Application [closed] - python

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I am trying to self-learn developing Web applications using Python as backend. Since I am from C++ background I find difficulty in building web pages (design / implementation) and backend code associated to it – creation of CSS, HTML code, including Images, tables etc. I read about http://webpy.org/ framework but have not yet used it. In actual I am a bit confused how to develop a great UI page using Python – something like page having multiple tabs, color scheme, drop box, list, graphs and other UI component / widgets - and ofcouse backend code associated to it.
Can anyone please let me know what path we should take so that the same can be made easy? I read about JQuery and believe that in computing world there are a lot of tools like that available but which combinations stands the best and .. easy to work with.

You can't run python in the browser. So, for web development it's used exclusively on the server side. And really it's whole purpose is to enforce your business logic and generate the markup for your site. Then the client side technologies (HTML5+Browser, Javascript and CSS) take over.
On the server-side, Django is really popular right now. It is quite robust and has a very active community behind it. I would recommend that you look at the Django tutorial. For the client side, jQuery is very popular and has a HUGE community behind it. There are many, many tutorials out there - just google "jQuery tutorial".
If you are not very good with CSS (and it sounds like you might not be), then I would personally recommend one of the grid-based CSS frameworks. They make it a lot easier to get a professional looking site. And with the responsive frameworks, then you have the added benefit of being quasi-mobile enabled. There are a bunch of them. Including one of the originals Grid 960, but again there are many. Here's a pretty good blog post on 16 of them.
As for controls/widgets, there are several to choose from. jQueryUI is very good and popular. While not as popular, Dojo is still a good option to check out. ExtJS is good, but not free. And the list goes on... YUI, etc. You will probably just want to pick one with a good community behind it and learn it.

I think this contributes to the discussion as it helped me a bit in making Python great for the web.
Metalfan, I saw you asking on the chat:
Are there any libraries which makes Python work like PHP. I mean embed
into HTML something like
You're asking about a templating library to build html, css, javascript, sql or anything else. I've searched for a tool to do that, and found Cog, Cheetah and most of what else Google throws at you. I was inspired by what I was in Django, which gives the template processing access to objects and basically the whole language, instead of only doing macro-expansion.
Web2py has a module that does just that, and I've found it very easy to modify or use stand-alone. I can't remember if I've made any modifications to the original, so I've uploaded the version I'm using, so it should work out of the box.
To generate code from a template, you include the template module, and call the render function with a template (string) and a context (dict containing local environment). Like this:
from template import render
import urllib2
environment = dict(
elements=[1, 2, 3],
username="mortn",
session_id="xyz",
lam=lambda x=0: urllib2.urlopen("http://google.com").read(),
f=f,
)
print render(content=html_template, context=environment)
The template would then look like this:
<html>
<h1>Hello {{= username }}</h1><br/>
{{ if session_id=="xyz": }}
{{ # indentation doesn't matter.. }}
this isn't printed unless if-statement matches
{{ else: }}
instead this would be shown
{{ pass # each if/for/while statements (that would
{{ # "indent your code"), must end with pass }}
{{ for e in elements: }} - {{=e}}
{{ pass }}
{{ # demo of looping }}
{{ if 1: }}
{{ for i in xrange(10): }}<br/>{{ pass }}
{{ pass }}
{{ # imported function }}
100 chars of google html get:
{{ =lam()[:100] }}
{{ # you can access the whole language with this }}
{{ =f()}}
.... and it gives THIS output:
<html>
<h1>Hello mortn</h1><br/>
this isn't printed unless if-statement matches
- 1
- 2
- 3
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
100 chars of google html get:
<!doctype html><html itemscope="itemscope"itemtype="http://schema.org/WebPage"><head><meta itemprop
you can do whatever
It messes a bit with the white spacing as you'll see, I've shortened the output down as each {{ block generates a newline. It can be edited in the template.py module as it has VERY readable code that adheres to PEP8.
TL;DR:
Here's the link for the sample code in a single file:
http://pastie.org/4776120
and the template.py module: http://pastie.org/4775988

First, check [w3schools.com][1] out,
Read on about 1)HTML, 2) CSS, 3) JavaScript 4) PHP
If you really want to build web apps fast, i'd recommend you to choose php over python, because php especially designed to build dynamic web apps.

Related

Python and web development | Mako - a lot of questions [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
Not coming from an MVC background, but just working with php purely, one of the greatest challenges was to grasp frameworks and the MVC ideology. While I am sure many adhere to MCV as the standard way to push code, I lack finding basic introductions into frameworks, and while they also do seem quite tedious to get started with, my goal is purely to write some Python code into html documents.
At first glance Mako seemed as the solution to the problem, allowing me to write the Python code into html, but at second glance it seemed to require more work than just "that".
What I simply cannot find an answer to anywhere I have looked is the whole aspect of "how-to-start with Mako".
Looking at the Mako site this comes up:
<%inherit file="base.html"/>
<%
rows = [[v for v in range(0,10)] for row in range(0,10)]
%>
<table>
% for row in rows:
${makerow(row)}
% endfor
</table>
<%def name="makerow(row)">
<tr>
% for name in row:
<td>${name}</td>\
% endfor
</tr>
</%def>
Once again I see the entire templating ideology (yuk) coming up, but I just want to write Python code into my html, period. So some questions that I have are:
Once Mako is installed can I start putting Python code into HTML and it will work?
If not, then I assume I need to put the example code from above into a .py file and put base.html in the same directory? Or do I put the .py file somewhere else?
Will this work like CSS in the sense that I inside the html file include a similar fashioned call to the .py file (or .mako file or whatever its called).
Since it sounds framework'ish, will I need to put the html file and the .py/.mako in the same directory or will they also have to be separated?
EDIT: I may as well ask if I can then call my extensions .psp (even though its not mod_python).
I know many would say that this is stupid and that there are better ways of doing it and that I make a big mistake. But clearly there are no noob tutorials explaining this in finer
details, thus leaving to do it the way I see fit, ie. put Python code inside a file and be done with it.
I also looked on this mod_python, but since it seems as an old solution I would actually like to skip that one. However, I hope there is a "new" solution to embed Python into HTML.
PS. I know all the framework evangelists will jump me, but the intention is not debate how to write code. Since no noob/step-by-step tutorial can be found on either Pythons, Djangos
or Makos website and for that matter Pylons, Pyramid etc. it must therefore be assumed that anyone wanting to do this knows their framework implementation methods by heart. But I dont, so I just want to put Python code into HTML and not spend/waste time on learning something that Python already should solve perfectly in the first place.
PPS. By noob, I mean I would love to know the basics such as. Take this code and put into this type of file and put that file there. Then take this file and do that. I just could not find this what so ever anywhere. Its like a public secret.....
First, understand that unlike PHP - which is a custom developed language exclusively for web development, Python is a general purpose programming language. Using Python you can develop Windows apps, Mac apps, server side scripts, mobile applications, servers, network clients - everything and anything that a general programming allows you do to. Just like Java or C#.
Therefore, there are multiple ways to do web development in Python. Thinking "PHP is web development" is wrong, and thinking "Python web development will be like PHP web development", is also wrong.
Finally, keep in mind that since PHP was designed solely for web development, it "hides" a lot of the sundry details that go into writing code that needs to sit behind a web server and process requests and return responses in a strict format.
To do web development in Python, you first and foremost need to learn Python. This is different than PHP. You learn web development as you learn PHP (since that's its prime purpose). Once you learn Python, you can develop all sorts of applications; and many Python developers don't develop for the web.
Since no noob/step-by-step tutorial can be found on either Pythons,
Djangos or Makos website and for that matter Pylons, Pyramid etc. it
must therefore be assumed that anyone wanting to do this knows their
framework implementation methods by heart.
Mako is a template language (like Smarty). It would be pointless to use it "standalone", just like Smarty is useless without PHP behind it.
All web frameworks have beginner's guides. Some are better than others. Django has one of the best documentation of any. Start here. To use any of the frameworks, you would need to know the methods they expose. Just like you need to know the mysql_* methods of PHP to interact with MySQL.
The rest of your questions stem from the fact that Python is not like PHP; and hence what you have come to expect from PHP you didn't find in the Python ecosystem.

Google App Engine(Python) - site fragments - composite view

Is there a way to build three or four parts of a site (three or four html templates) and then render some of them or all of them together in GAE python? I know I can load and render one specific html django template but I want to build templates for different parts of the site in different files and then compose them together depending on the situation.
A good example would be that I want pretty much the same menu, header, footer in most of my web application pages but I want to switch a specific part of the content.
So I would like to have one file and template that deals with lets say classes and another that deals with students, so the general look of the site (main.html) stays the same but the way I display and handle the information about students or classes is completely different. I basically want to plant a bunch of page specific html into a generic template.
Thanks for any help on this. :)
I am not sure what is the correct technical term for what I'm looking for(I tried searching). => I think they call it composite view or site fragments in the Zend framework.
You should use template inheritance in Django. Have a look at this tutorial for a start.
EDIT The official Django Book section on Template Inheritance also demonstrates how different 'fragments' e.g. a footer, or a nav bar, may be stored in different template files and brought together via inclusion and inheritance.
This site shows how one template can inherit from another, as when a site section template extends a basic layout template, with the code, for example,
{% extends "base.html" %}
It also shows how using template inclusion one may, for example, add different pieces to a larger template like pieces in a puzzle. For example, a navigation fragment may be added to a layout file with the phrase
{% include "nav.html" %}
As noted in the comments by #Nick Johnson: extends is more compact and can make the use of multiple file fragments unnecessary. Only include as last resort, if extends fails you.
EDIT See also my answer to a question on "How to cut large HTML file into multiple HTML files"

limit Markdown in Django

I am using markdown on the comments system in my blog developed using django
I want to limit the possible format to accept just a basic one (with bold, italic, link and code)
How do I set Markdown to do this ?
if this is not possible using markdown so any alternatives ?
PS : i am using the default django app 'django.contrib.markup'
here is the actual code i am using on my template:
<div class="comment-content>
<p>
{% load markup %}
{{ comment.comment|markdown:"safe" }}
</p>
</div>
It would depend on which markdown plugin you're using there are many out there from a quick google search.
You'll have to either find documentation online for the specific one you are using, or perhaps look through the source and if it's open source modify it if you have to.
Or just find another one that allows that functionality.
edit:
Seems that django uses python-markdown(http://www.freewisdom.org/projects/python-markdown/), from a quick look it doesn't seem to support specifying only specific formatting options. However it seems to be easily extensible, so if you write an extension you can use it in django like this:
{{ string|markdown:"extension_name,extension2,etc..." }}
You could use Bleach and write a template tag to strip out the tags you don't want.
For example, to allow only bold and italic:
#register.filter
def limit_markdown(comment):
comment = bleach.clean(comment, tags=['b', 'i', 'em'], strip=True)
return comment
Then in your template, you could use it as:
{{ comment.comment|markdown|limit_markdown|safe }}

What specific issue try zope folks to solve with TAL, TALES & METAL

TAL, TALES and METAL are all three the zope templating language. The thing that I don't understand is why so much troubles. I don't understand the spirit of ZTL, any tips ?
one more question : is there a standalone library that try to achieve the same thing that ZTL but outside the Zope ecosystem ?
The core idea of tal/tales is to have proper valid (x)html. All the template functionality is in attributes or namespaced elements. HTML editors should work just fine with these templates. Let's give an example. First tal/tales:
<ul>
<li tal:repeat="customer customers">
<a href=""
tal:attributes="href customer.url"
tal:content="customer.name>
Sample customer name
</a>
</li>
</ul>
And in Django's template language, just as an example:
<ul>
{% for customer in customers %}
<li>
<a href="{{ customer.url }}">
{{ customer.name }}
</a>
</li>
{% endfor %}
</ul>
Which one's better? Open question. One plays nice with your html editor, the other makes the non-html statements clearer. Anyway, making it proper html is the main idea behind tal/tales!
Your last question: http://zpt.sourceforge.net/
Since the other question isn't that specific, I'm not sure there's a definitive answer to this, unless one of the original developers answers.
Zope Page Templates is the templating system making use of TAL/TALES/METAL, and the specific issue it tries to solve is the same as with many other templating systems: produce valid HTML. In the case of ZPT it is possible to create also any flavour of XML. At the time of its creation, it had some outstanding properties:
the templates itself could be used in designing tools like Dr*beep*mw*beep*ver or Fr*beeb*ntp*beep*ge without modification
the nested structure of XML/XHTML was ensured (invalid structured XML wouldn't work)
the templates themselves could be nested, mixed and matched
pure python implementation (rather clean code) and embedded python expressions
in the meantime the web has caught up and there are many alternatives available

Including Flash content inline in a custom Weblog?

I'm trying to think of a way to place Flash content into a blog post so that it appears inline between paragraphs. I'm writing a custom weblog application in Django (still learning) and I'll be using SWFObject for the embedding.
The blog is for me only so the back-end isn't too fancy. I'm simply using Django's built in admin interface. No TinyMCE rich text editor (like Wordpress), rather I've implemented Markdown.
I'd like to add Flash content into the body of a post, between paragraphs, in a way that is not coupled to any third party script. Meaning, I would prefer not to include javascript within the body of the blog post as it introduces a dependency on SWFObject. For example, I could quite easily add the following to an entry via the back-end to embed a SWF inline:
Paragraph one...
<script type="text/javascript">
swfobject.embedSWF("/path/to/flash.swf", "myContent", "200", "200", "9.0.0");
</script>
<div id="myContent"></div>
Paragraph two...
As you can see this is quite wordy and a lot to remember but it also refers to SWFObject directly. This WILL work, however I would prefer to write it in a "cleaner" more abstract way. What I was thinking of doing is creating my own parser which would translate a custom string into the above just before rendering a template.
[#SWF swf="/path/to/flash.swf" w="200" h="200" ver="9.0.0"]
I'm wondering if anyone has encountered this issue. I'd love to know how you solved it.
You might want to look into OEmbed, specifically the django-oembed project.

Categories

Resources